1

次の状況を想定します。

interface IFoo
{
  public function Bar();
}

trait Foo
{
  public function Bar()
  {
    echo 'Bar';
  }
}

class FooBar implements IFoo
{
   use Foo;
}

$foobar = new FooBar();
$foobar->Bar(); //echos 'Bar';

クラス FooBar を独自のファイルに入れ、インターフェイス IFoo も独自のファイルに入れました。

しかし、特性 Foo をどうすればいいですか:

  • 独自のファイルで?(私の好み)
  • インターフェイス IFoo と一緒に?
  • 特性に独自のファイルが与えられた場合、オートロードはどのように処理しますか?

注: netbeans は、クラス FooBar のコードを無効としてマークします。Netbeans は、特性 Foo が IFoo の実装に使用されていることを検出しません。バグ?

4

1 に答える 1

4

トレイトはクラスと同じように自動ロードされます。そのため、PSR 準拠のローダー (名前空間はディレクトリ、ファイル名はクラス/インターフェイス/特性名) を使用している場合、すべてが独自のファイル内の特性で機能するはずです。

タイトルの質問に答えるには、標準に固執する場合は、PSR の読み込みを使用する必要があります。そうです、特性は別のファイルにある必要があります。

netbeans に関する限り、7.2 が php 5.4 (およびそれに伴う特性) をサポートする唯一のバージョンだと思うので、netbeans 7.2 があり、プロジェクト設定で php 5.4 が設定されていることを確認してください。

于 2012-09-19T08:10:27.140 に答える