これは インスタンスの静的プロパティの取得 を参照しています。私は初心者であり、次のコードがあります。
class Foo
{
public static $my_static = 1;
}
class Bar extends Foo
{
}
$foo = new Foo();
$boo = new Bar();
echo Foo::$my_static; // ok
echo Bar::$my_static; // ok
echo $foo::$my_static; // ok
echo $boo::$my_static; // ok
静的変数/プロパティは、C++と同様にClassName :: static_propertyとしてのみアクセスされますが、PHPではそうではありません... PHP本はclassName :: static_propertyパターンについて主に言及しており、object :: static_property構成。これについてもっと光が必要です。
静的プロパティには、さまざまな方法でアクセスできます。
Class::$aStaticProp; //by class name
$classname::$aStaticProp; // As of PHP 5.3.0 by object instance
矢印演算子->
を使用して、オブジェクトから静的プロパティにアクセスすることはできません。
PHP 5.3.0以降、変数を使用してクラスを参照することが可能になりました。変数の値をキーワードにすることはできません(例:self、parent、static))。
さらに読むことができます manual
$instance::$staticProperty
は、単にClass::$staticProperty
の便利な省略形です。すでにclassのインスタンスがあり、構文が明確であるため、PHPを使用すると、潜在的に長いクラス名を作成する必要がなくなります。機能上の違いはありません。
変数にアクセスする関数も静的である場合は、クラス内でself :: $ staticProperyのように使用する必要があります。