PHP設計模式之單例模式原理與實作方法分析php技巧

jacklove
發布: 2023-04-01 20:06:01
原創
2307 人瀏覽過

這篇文章主要介紹了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技巧

laravel中簡訊傳送驗證碼的實作方法php實例

PHP receiveMail實作收郵件功能php實例

##

以上是PHP設計模式之單例模式原理與實作方法分析php技巧的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板