PHP單例模式

2021-08-20 01:41:34 字數 1922 閱讀 2673

以下為單例模式**:  

<?

phpclass easyframework_easy_mysql  

public static function getinstance()  

return self::$_instance;  

}  protected function __clone()  

}  $x

= easyframework_easy_mysql

::getinstance();  

var_dump($x);  

?>

/*  

* 1.第一步:  

* 既然是單例,也就是只能例項化一次,也就代表在例項化時  

* 不可能使用new關鍵字!!!!  

* 在使用new關鍵字時,類中的建構函式將自動呼叫。  

* 但是,如果我們將建構函式的訪問控制符設定為protected或private  

* 那麼就不可能直接使用new關鍵字了!!!  

* 第二步:  

* 無論protected/private修飾的屬性或方法,請問在當前類的  

* 內部是否可以訪問?--->

可以  

* 第三步:  

* 現在我們根本沒有辦法得到物件(因為你不能使用new關鍵字了),  

* 第四步:靜態成員(包括屬性或方法)在訪問時,只能通過  

* 類名稱::屬性()  

* 類名稱::方法()  

* 第五步:如果我現在存在乙個靜態方法-->

getinstance()  

* 那麼在呼叫時就應寫成  

* $object

= easyframework_easy_mysql

::getinstance()  

* 如果,getinstance()方法可以得到唯一的乙個物件  

* 也就代表是所謂的單例模式了!!!  

* 第六步,怎麼讓getinstace()只得到乙個物件呢?  

* 既然要得到物件,那麼肯定是:  

* $variabl

= new

????();  

* 我們又知道靜態屬性的值是可以所有的物件來繼承的!!!  

* 靜態成員是屬於類的,而非物件的!  

* 所以:  

* 第七步:宣告乙個靜態的屬性,用其儲存例項化的物件  

* protectd static $_instance  

*  * 並且初始值為null  

* 那麼我在呼叫getinstance()方法時,只需要判斷其值是否為空即可\  

*  * public static function getinstance()  

*  return self::_instance;  

* }  

* 在例項時,一定是這樣寫:  

* $x

= easyframework_easy_mysql

::getinstance();  

* 在第一時呼叫時,類的$_instance這個靜態屬性值為null,  

* 那麼也就代表,getinstance()方法的判斷條件為真了,  

* 也就意味著  

* self::$_instance這個成員有了值了!!!  

* 並且還返回這個值  

* $y

= easyframework_easy_mysql

::getinstance();  

* 在第二次或第n次呼叫時,self::$_instance已經有了值了  

* 也就代表getinstance()方法的條件為假了!!!  

* 也就代表其中的程式代表不可能執行了!!!  

* 也就代表將直接返回以前的值了!!!  

*  *  

*  * */  

PHP單例模式

模式對於oop開發人員尤其有用,因為他有助於建立穩定的api,並且仍然保持一定的靈活度。一種模式可以幫助我們定義負責完成特定任務的物件,還可以允許我們全部修改掉某個類而不用修改與這些類打交道的 前者被稱為類的職責,後者被稱為類的多型性。單例模式被當作職責模式,他用來在應用程式中建立乙個單一的功能訪問...

php單例模式

單例模式 單例類 1 建構函式需要標記為private 訪問控制 防止外部 使用new操作符建立物件 單例類不能在其他類中例項化,只能被其自身例項化 2 擁有乙個儲存類的例項的靜態成員變數 3 擁有乙個訪問這個例項的公共的靜態方法 常用getinstance 方法進行例項化單例類,通過instanc...

php 單例模式

單例模式 身份證號碼 單例類identitycardno 身份證號碼類 class identitycardno public function getinstance else return self instance private function setidentitycardno no p...