このページでは、静的メソッドとプロパティを定義するための static キーワードの使用について説明します。 static は、静的変数と遅延静的バインディングの定義にも使用できます。
クラス属性またはメソッドを静的として宣言すると、クラスをインスタンス化せずに直接アクセスできるようになります。インスタンス化されたクラスのオブジェクトを介して静的プロパティにアクセスすることはできません (ただし、静的メソッドはアクセスできます)。
PHP 4 と互換性を保つために、アクセス制御が指定されていない場合、プロパティとメソッドはデフォルトでパブリックになります。
静的メソッドはオブジェクトを通じて呼び出す必要がないため、疑似変数 $this は静的メソッドでは使用できません。
-> 演算子を使用してオブジェクトから静的プロパティにアクセスすることはできません。
非静的メソッドを静的に呼び出すと、E_STRICT レベルのエラーが発生します。
他のすべての PHP 静的変数と同様、静的プロパティは式ではなくリテラルまたは定数にのみ初期化できます。したがって、静的プロパティは整数または配列に初期化できますが、別の変数や関数の戻り値に初期化したり、オブジェクトを指すことはできません。
例 #1 静的プロパティの例
class Foo { public static $my_static = 'foo'; public function staticValue(){ return self::$my_static; } } class Bar extends Foo { public function fooStatic(){ return parent::$my_static; } } print Foo::$my_static.'<br>'; $foo = new Foo(); print $foo->staticValue().'<br>'; print $foo->my_static.'<br>'; print $foo::$my_static.'<br>'; $classname = 'Foo'; print $classname::$my_static; print Bar::$my_static.'<br>'; $bar = new Bar(); print $bar->fooStatic().'<br>';