PHP單例模式的三私一公

來源:互聯網
上載者:User

標籤:turn   產生   實現   log   func   class   其他   資料   nbsp   

單例模式:即一個類只被執行個體化一次,當其他人對其再次執行個體化時,便返回第一次執行個體化的對象。這種模式可以極大地節約資源。典型應用於資料庫類的執行個體化。以執行個體化一個Mysql資料庫類為例:要實現一個類只執行個體化一次,就必須堵住其他執行個體化的入口。1.執行個體化類時,會自動調用類的構造方法,因為將構造方法設定為private屬性,限制為只能在類內部執行個體化 private function __construct(){ }2.定義一個靜態方法,在類內部執行個體化對象。執行個體化前先判斷該類是否已被執行個體化了,若已被執行個體化,就返回該執行個體化對象;若沒被執行個體化,便執行個體化一個對象並將該對象儲存在類的靜態屬性中 private static $self = null; public static function create(){  if (self::$self === null) {   self::$self = new self();  }  return self::$self; }3.禁止複製,對象之間進行複製可產生不同的對象。而複製時會自動調用類的__conle方法,因此將複製方法設定為private屬性 private function __clone(){ }綜上,三私一公(三個私人屬性和一個公用方法)單例模式的代碼如下:class Mysql { private static $self = null; public static function create(){  if (self::$self === null) {   self::$self = new self();  }  return self::$self; } private function __construct(){ } private function __clone(){ }}$a = Mysql::create();$b = Mysql::create();/*判斷兩個類是否為同一個類*/echo $a===$b ? 1 : 0;

 

PHP單例模式的三私一公

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.