本頁說明了用 static 關鍵字來定義靜態方法和屬性。 static 也可用於定義靜態變數以及後期靜態綁定。
聲明類別屬性或方法為靜態,就可以不實例化類別而直接存取。靜態屬性不能透過一個類別已實例化的物件來存取(但靜態方法可以)。
為了相容於 PHP 4,如果沒有指定存取控制,則屬性和方法預設為公有。
由於靜態方法不需要透過物件即可調用,所以偽變數 $this 在靜態方法中不可用。
靜態屬性不可以由物件透過 -> 操作符來存取。
用靜態方式呼叫一個非靜態方法會導致一個 E_STRICT 等級的錯誤。
就像其它所有的 PHP 靜態變數一樣,靜態屬性只能被初始化為文字或常數,不能使用表達式。所以可以把靜態屬性初始化為整數或數組,但不能初始化為另一個變數或函數回傳值,也不能指向一個物件。
Example #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>';