バージョン5.3以降、変数を使用して静的クラスデータにアクセスできるようになりました。 これにより、「::」演算子を何らかの方法で「そうではない」使用しようとしたときに発生した、予期せぬT_PAAMAYIM_NEKUDOTAYIMエラーという構文エラーを事実上忘れていました。
しかし、私には思えるように、誰もが開いた機会について知っているわけではありません。
実験用のインターフェース、クラス、オブジェクトを作成しましょう。
interface bar{ const SOME_CONST = 'SOME_CONST'; static public function static_public_function(); } class foo implements bar{ static public $static_public_property = 'static_public_propery'; static public function static_public_function(){ return 'static_public_function'; } } $object = new foo();
5.3以前の両方で機能するコード。 オブジェクトを使用可能にした場合、そのクラスを見つける必要がありました。
echo foo::SOME_CONST . PHP_EOL;
PHP 5.3以降で動作するコード。 現在、クラスを指定する必要はありません。
echo $object::$static_public_property . PHP_EOL;
定数と静的メソッドは、PHPのインターフェイスの出現の最初からインターフェイスで宣言できます。 しかし、それらを使用するには、インターフェイスまたはクラスの名前を指定する必要がありました。 これで、オブジェクトを使用してこのデータにアクセスできます。 バージョン5.3以降、定数と静的メソッドはインターフェースの本格的な部分になったと言えます。
このため、クラス名とインターフェイスの使用回数を減らすことができます。 また、IDEのオートコンプリートを「手元」オブジェクトとともに使用します。