小編給大家分享一下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中如何實現單例模式”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。