以下為單例模式**:
<?
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...