由於我以前是做java開發的,在使用單例模式的時候,首先想到的想用餓漢式,然後發現在PHP中,有這樣一個特性:因為PHP不支持在類定義時給類的成員變數賦予非基本類型的值。如表達式,new操作等等。轉而想要確保這個單例模式的原子性,發現PHP中也沒有像JAVA中的線程安全問題。
嘿嘿,你說PHP好不好?那OK接下來就試試PHP的懶漢式單例模式了。
相關推薦:《PHP教學》
一、三私一公:
①、私有靜態屬性,又來儲存產生的唯一物件
②、私有建構子
③、私有複製函數,防止複製-clone
④、公有靜態方法,用來訪問靜態屬性儲存的對象,如果沒有對象,則產生此單例
二、關鍵字instanceof
檢查此變數是否為該類別的物件、子類、或是實作介面。
1、一個private的__construct是必須的,單例類別不能在其它類別中實例化,只能被自身實例化;
2、擁有一個保存類別的實例的靜態成員變數;
3、一個靜態的公共方法用來實例化這個類,並且存取這個類別的實例;
class SingleInstance{ private function _construct(){ } private static $instance; private function _clone(){ } public static function getInstance(){ if(!self::$instance instanceof SingleInstance){ self::$instance=new SingleInstance(); } return self ::$instance; } }
以上是關於PHP中單例模式的實現的詳細內容。更多資訊請關注PHP中文網其他相關文章!