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

首頁 > 開發 > PHP > 正文

PHP單例模式學習筆記

2024-05-04 21:57:42
字體:
來源:轉載
供稿:網友

為了達到這種目的,必須保證整個項目有且只有一個實例存在并提供一個訪問點供全局訪問.這就需要通過調用此類的一個共用靜態方法來訪問這個實例,也就是說此類不能在類外面去實例化,只能在類內部實例,而且是只能通過共用的靜態方法調用實例;

最近在看php高級程序設計、模式、框架與測試一書,頗有感悟,與大家分享:

在做項目時,通常我們希望某些類實例一次就夠了,比如共用配置類,模板操作類,數據庫連接等等,這些類因為在整個項目開發中是通用的,如果實例多次實例就會占用資源.

為了達到這種目的,必須保證整個項目有且只有一個實例存在并提供一個訪問點供全局訪問.這就需要通過調用此類的一個共用靜態方法來訪問這個實例,也就是說此類不能在類外面去實例化,只能在類內部實例,而且是只能通過共用的靜態方法調用實例;

那么怎么保證此類不能在外面實例化呢?需要此單例類必須擁有一個構造函數__construct,且設置為private(因為已經有__construct,不考慮默認的構造方法:直接用類名的方法的情況),這樣就保證了不會在外面直接實例化!同時還需要聲明一個靜態方法變量來保存此類的實例,一個共用的靜態方法來訪問此實例,(因為要共用,所以聲明為靜態的,存放內存中的共用代碼區部分).還需要創建一個空的私有的__clone()方法,以防止被克隆.

一個很典型的單例類如下:

實例代碼如下:

  1. class Simple 
  2.  /** 
  3.   * 單例類實例 
  4.   * 
  5.   * @static 
  6.   * @var object Simple 
  7.   */ 
  8.  public static $_instance
  9.  
  10.  //其他成員變量 
  11.  
  12.  /** 
  13.   * 構造方法 
  14.   * 
  15.   * @return void 
  16.   */ 
  17.  private  function __construct() 
  18.  { 
  19.   //寫構造方法 
  20.  } 
  21.  
  22.  /** 
  23.   * 單例模式調用方法 
  24.   * 
  25.   * @static 
  26.   * @return object Template 
  27.   */ 
  28.  public static function getInstance() 
  29.  { 
  30.   if (!self::$_instance instanceof self) 
  31.    self::$_instance = new self(); 
  32.   return self::$_instance
  33.  } 
  34.  
  35.  /** 
  36.   * 聲明一個空的私有克隆方法 
  37.   * 
  38.   */ 
  39.          private  function __clone() 
  40.         { 
  41.         } 
  42.  
  43.  //其他方法 
  44.  
  45. //調用方式 
  46. $Simple = Simple::getInstance(); 
  47. ?> 

上面用到了 instanceof關鍵字,為比較操作符,返回布爾能夠判斷某個對象實例是否為制定的類型,或者是否從某個類繼承,或者是否實現了某個特定接口

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 奉新县| 景谷| 朝阳区| 雅江县| 阜宁县| 青阳县| 苗栗市| 吉首市| 隆林| 宝应县| 广丰县| 绵阳市| 雅江县| 本溪市| 隆回县| 邹城市| 莱州市| 杨浦区| 广宗县| 石渠县| 长岭县| 灵台县| 井冈山市| 若尔盖县| 夹江县| 康乐县| 新民市| 张北县| 濉溪县| 宁化县| 三门峡市| 红原县| 平塘县| 安仁县| 东安县| 静宁县| 大安市| 寿阳县| 茂名市| 濉溪县| 罗城|