PHP單例模式使用案例詳解

來源:互聯網
上載者:User
這次給大家帶來PHP單例模式使用案例詳解,PHP單例模式使用的注意事項有哪些,下面就是實戰案例,一起來看一下。

本文執行個體講述了PHP設計模式之單例模式原理與實現方法。分享給大家供大家參考,具體如下:

一、什麼是單例模式

作為對象的建立模式,單例模式確保某一個類只有一個執行個體,並且對外提供這個全域執行個體的訪問入口。它不會建立執行個體副本,而是會向單例類內部儲存的執行個體返回一個引用。

二、PHP單例模式三要素

1. 需要一個儲存類的唯一執行個體的靜態成員變數。

2. 建構函式和複製函數必須聲明為私人的,防止外部程式建立或複製執行個體副本。

3. 必須提供一個訪問這個執行個體的公用靜態方法,從而返回唯一執行個體的一個引用。

三、為什麼使用單例模式

使用單例模式的好處很大,以資料庫操作為例。若不採用單例模式,當程式中出現大量資料庫操作時,每次都要執行new操作,每次都會消耗大量的記憶體資源和系統資源,而且每次開啟和關閉資料庫連接都是對資料庫的一種極大考驗和浪費。使用了單例模式,只需要執行個體化一次,不需要每次都執行new操作,極大降低了資源的耗費。

四、單例模式樣本

這裡以資料庫操作為例

<?php/***  單例模式**/class Db{  //儲存全域執行個體  private static $instance;  //資料庫連接控制代碼  private $db;  //資料庫連接參數  const HOSTNAME = "127.0.0.1";  const USERNAME = "root";  const PASSWORD = "root";  const DBNAME = "testdb";  //私人化建構函式,防止外界執行個體化對象  private function construct()  {    $this->db = mysqli_connect(self::HOSTNAME,self::USERNAME,      self::PASSWORD,self::DBNAME);  }  //私人化複製函數,防止外界複製對象  private function clone()  {  }  //單例訪問統一入口  public static function getInstance()  {    if(!(self::$instance instanceof self))    {      self::$instance = new self();    }    return self::$instance;  }  //資料庫查詢操作  public function getinfo()  {    $sql = "select * from testtb";    $res = mysqli_query($this->db,$sql);    while($row = mysqli_fetch_array($res)) {      echo $row['testcol'] . '<br />';    }    mysqli_free_result($res);  }}$mysqli = Db::getInstance();$mysqli->getinfo();?>

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

PHP產生二維碼海報案例分析

PHPExcel修改步驟詳解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.