クラスメンバもしくはメソッドを static として宣言することで、 クラスのインスタンス化の必要なしにアクセスすることができます。 static なメンバは、インスタンス化されたクラスオブジェクトから アクセスすることはできません (static なメソッドからは可能です) 。
static 宣言は、可視性の宣言の後に置く必要があります。 PHP 4 との互換性を維持するため、 可視性の宣言が ない場合、そのメンバまたはメソッドは、 publicとして宣言されていると みなされます。
static メソッドは、オブジェクトのインスタンスを生成せずに
コールすることができます。疑似変数 $this
は、
static として宣言されたメソッドの内部から利用することはできません。
実際、static メソッドは、コンパイル時に 解決されます。 明示的なクラス名を使用する時、このメソッドはすでに完全に特定されて おり、ルールの継承を行うことはできません。 コールが self を伴って行われた場合、 self はカレントのクラス、すなわち、 そのコードが属するクラスに変換されます。 ここでもルールの継承は適用されません。
static プロパティは、矢印演算子 -> によりオブジェクトからアクセス することはできません。
static でないメソッドを静的にコールすると、E_STRICT レベルの 警告が発生します。