国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

php設計模式之單例模式使用示例

2024-09-04 11:46:51
字體:
來源:轉載
供稿:網友

單例模式也就是只能實例化一次,也就代表在實例化時不可能使用new關鍵字,下面是使用示例,大家參考使用吧,以下為單例模式代碼:

  1. <?php 
  2. class EasyFramework_Easy_Mysql{ 
  3.     protected static $_instance = null; 
  4.     private function __construct(){ 
  5.  
  6.     } 
  7.     public static function getInstance(){ 
  8.         if (self::$_instance === null){ 
  9.             self::$_instance = new self(); 
  10.         } 
  11.         return self::$_instance
  12.     } 
  13.  
  14.     protected function __clone(){ 
  15.  
  16.     } 
  17. //Vevb.com 
  18.  
  19. $x = EasyFramework_Easy_Mysql::getInstance(); 
  20.  
  21. var_dump($x); 
  22.  
  23.  
  24. ?> 

1.第一步:

既然是單例,也就是只能實例化一次,也就代表在實例化時,不可能使用new關鍵字?。。?!

在使用new關鍵字時,類中的構造函數將自動調用。

但是,如果我們將構造函數的訪問控制符設置為protected或private

那么就不可能直接使用new關鍵字了?。?!

第二步:

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

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

第三步:

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

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

類名稱::屬性()

類名稱::方法()

第五步:如果我現在存在一個靜態方法--> getInstance()

那么在調用時就應寫成

$object = EasyFramework_Easy_Mysql::getInstance()

如果,getInstance()方法可以得到唯一的一個對象

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

第六步,怎么讓getInstace()只得到一個對象呢?

既然要得到對象,那么肯定是:

$variabl = new ????();

我們又知道靜態屬性的值是可以所有的對象來繼承的!??!

靜態成員是屬于類的,而非對象的!

所以:

第七步:聲明一個靜態的屬性,用其存儲實例化的對象

protectd static $_instance

并且初始值為null

那么我在調用getInstance()方法時,只需要判斷其值是否為空即可/

  1. public static function getInstance(){ 
  2.      if(self::_instance === null){ 
  3.       self::_instance = new self(); 
  4.   } 
  5.   return self::_instance; 
  6.  } 

在實例時,一定是這樣寫:

$x = EasyFramework_Easy_Mysql::getInstance();

在第一時調用時,類的$_instance這個靜態屬性值為null,那么也就代表,getInstance()方法的判斷條件為真了,

也就意味著

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

并且還返回這個值

$y = EasyFramework_Easy_Mysql::getInstance();

在第二次或第N次調用時,self::$_instance已經有了值了

也就代表getInstance()方法的條件為假了!??!

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 卢龙县| 潍坊市| 常宁市| 林芝县| 武陟县| 湖南省| 精河县| 济阳县| 德兴市| 江山市| 奉新县| 康保县| 措勤县| 高淳县| 莱阳市| 紫阳县| 惠安县| 西宁市| 瑞昌市| 新津县| 东安县| 五指山市| 淮安市| 玉龙| 隆林| 观塘区| 岚皋县| 刚察县| 营山县| 松阳县| 迁安市| 隆回县| 延寿县| 黄龙县| 吉水县| 巩义市| 汶川县| 高唐县| 英山县| 正宁县| 山阴县|