static キーワード
クラスのメンバーまたはメソッドを static として宣言すると、クラスをインスタンス化せずに直接アクセスできます。静的メンバー (静的メソッドを除く) には、オブジェクトを通じてアクセスできません。
PHP4 と互換性を持たせるため、「可視性」が指定されていない場合、プロパティとメソッドはデフォルトで public になります。
静的メソッドはオブジェクトを通じて呼び出す必要がないため、疑似変数 $this は静的メソッドでは使用できません。
-> 演算子を使用してオブジェクトから静的プロパティにアクセスすることはできません。
:: メソッドを使用して非静的メソッドを呼び出すと、E_STRICT レベルのエラーが発生します。
他のすべての PHP 静的変数と同様、静的プロパティは文字値または定数にのみ初期化でき、式は使用できません。 したがって、静的プロパティを整数または配列に初期化することはできますが、別の変数や関数の戻り値、またはオブジェクトを指すことはできません。
PHP5.3.0 以降では、変数を使用してクラスを動的に呼び出すことができます。ただし、この変数の値をキーワード self、parent、または static にすることはできません。
例 #1 静的メンバー コードの例
class Foo
{
public static $my_static = 'foo';
public function staticValue() {
return self::$my_static;
}
}
class Bar は Foo
{
public function fooStatic() {
returnparent::$my_static;
}
}
print Foo::$my_static . " ";
$foo = new Foo(); を拡張します。
print $foo->staticValue() . " ";
print $foo->my_static . " "; // 未定義の "プロパティ" my_static
print $foo::$my_static . 'Foo';
print $classname::$my_static . " "; PHP 5.3.0 以降では、
print Bar::$my_static を動的に呼び出すことができます。 " ";
$bar = new Bar();
print $ bar->fooStatic() . " ";
?>
class Foo {