10

PHPドキュメントから:

名前空間によって影響を受けるのは、クラス、インターフェイス、関数、および定数の 4 種類のコードだけです。

しかし、TRAITS も影響を受けているように私には思えます。

namespace FOO;

trait fooFoo {}

namespace BAR;

class baz
{
    use fooFoo; // Fatal error: Trait 'BAR\fooFoo' not found in
}

私が間違っている?

4

4 に答える 4

2

私の経験では、貼り付けたこのコードが別のファイル/フォルダーにあり、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
  }
于 2014-12-17T14:49:19.110 に答える