這篇文章主要介紹了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技巧
laravel中簡訊發送驗證碼的實現方法php執行個體
PHP receiveMail實現收郵件功能php執行個體