6

私はPHPクラスで魔法のメソッドを使用していますが、それらをプライベートにしようとすると、警告が表示されます。

警告:マジックメソッド__get()は公開されている必要があり、静的にすることはできません...

Eclipseのオートコンプリートにこれらのメソッドを含めたくありません。(多分phpdocでの方法?)それで私の質問は、なぜこれらのメソッドを公開しなければならないのかということです。

4

1 に答える 1

9

クラス外のスコープからメソッドを呼び出しているからです。

例えば:

// this can be any class with __get() and __set methods
$YourClass = new YourOverloadableClass();

// this is an overloaded property
$YourClass->overloaded = 'test';

上記のコードは次のように「変換」されます。

$YourClass->__set('overloaded', 'test');

後で次のようなプロパティ値を取得するとき:

$var = $YourClass->overloaded;

このコードは次のように「変換」されます。

$YourClass->__get('overloaded');

いずれの場合も、マジックメソッド__get__set、はクラスの外部から呼び出されるため、これらのメソッドは。である必要がありますpublic

于 2011-11-22T17:45:14.930 に答える