首頁 >後端開發 >php教程 >PHP單例模式使用案例詳解

PHP單例模式使用案例詳解

php中世界最好的语言
php中世界最好的语言原創
2018-05-16 14:11:521720瀏覽

這次帶給大家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[&#39;testcol&#39;] . &#39;<br />&#39;;
    }
    mysqli_free_result($res);
  }
}
$mysqli = Db::getInstance();
$mysqli->getinfo();
?>

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

推薦閱讀:

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

#PHPExcel修改步驟詳解

以上是PHP單例模式使用案例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn