web-dev-qa-db-ja.com

PHPオブジェクトを使用して静的プロパティにアクセスする

これは インスタンスの静的プロパティの取得 を参照しています。私は初心者であり、次のコードがあります。

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構成。これについてもっと光が必要です。

22
user2314576

静的プロパティには、さまざまな方法でアクセスできます。

Class::$aStaticProp; //by class name

$classname::$aStaticProp; // As of PHP 5.3.0 by object instance

矢印演算子->を使用して、オブジェクトから静的プロパティにアクセスすることはできません。

PHP 5.3.0以降、変数を使用してクラスを参照することが可能になりました。変数の値をキーワードにすることはできません(例:self、parent、static))。

さらに読むことができます manual

23
Robert

$instance::$staticPropertyは、単にClass::$staticPropertyの便利な省略形です。すでにclassのインスタンスがあり、構文が明確であるため、PHPを使用すると、潜在的に長いクラス名を作成する必要がなくなります。機能上の違いはありません。

11
deceze

変数にアクセスする関数も静的である場合は、クラス内でself :: $ staticProperyのように使用する必要があります。

0
Alp Altunel