PHPドキュメントから:
名前空間によって影響を受けるのは、クラス、インターフェイス、関数、および定数の 4 種類のコードだけです。
しかし、TRAITS も影響を受けているように私には思えます。
namespace FOO;
trait fooFoo {}
namespace BAR;
class baz
{
use fooFoo; // Fatal error: Trait 'BAR\fooFoo' not found in
}
私が間違っている?
PHPドキュメントから:
名前空間によって影響を受けるのは、クラス、インターフェイス、関数、および定数の 4 種類のコードだけです。
しかし、TRAITS も影響を受けているように私には思えます。
namespace FOO;
trait fooFoo {}
namespace BAR;
class baz
{
use fooFoo; // Fatal error: Trait 'BAR\fooFoo' not found in
}
私が間違っている?
私の経験では、貼り付けたこのコードが別のファイル/フォルダーにあり、spl_autoload_register関数を使用してクラスをロードする場合は、次のようにする必要があります。
//file is in FOO/FooFoo.php
namespace FOO;
trait fooFoo {}
//file is in BAR/baz.php
namespace BAR;
class baz
{
use \FOO\fooFoo; // note the backslash at the beginning, use must be in the class itself
}