靜態方法:
範例
class A{ public static function a(){ # code ... } public static function b(){ # code ... } } // 使用 A::a(); A::b();
當腳本被解釋的時候,靜態方法會被載入到記憶體(並且單份儲存)。使用的時候可以像是使用函數一樣。
單例:
為了實現一個class在記憶體中只有單份被存儲,用靜態變數透過程式碼實現的一種設計模式
範例
class Container(){ protected static $loadedSingletonClasses = []; public static function loadSingletonClass($className=''){ if(!isset(self::$loadSingletonClass[$className])){ self::$loadSingletonClass[$className] = new $className; } return self::$loadSingletonClass[$className]; } } $a = Container::loadSingletonClass("foo\bar\MyClass"); $b = Container::loadSingletonClass("foo\bar\MyClass");
指向的是同一個記憶體位址,(但是要是想觸發這兩個變數實例化的class的析構函數需要將這兩個變數全部銷毀才可以,詳見php物件導向中的知識總結)