php 單例模式 多頁面,PHP單例模式的實現

2021-10-25 21:26:25 字數 1066 閱讀 2775

單例模式的意義在於,很多時候不需要建立重複的例項。

用php實現單例模式的原理是,使用乙個靜態變數儲存例項,當遇到重複的「new」操作時,直接返回靜態變數中儲存的例項。

典型的應用有資料庫類,請看**:

class db{

//儲存例項的靜態變數

public static $instance;

//構造方法私有化 不能直接例項化

private function __construct(){

//資料庫連線**

//獲取例項

public static function getinstance(){

//如果例項已經存在 直接返回

if(self::$instance){

return self::$instance;

self::$instance = new self();

return self::$instance;

//示例方法

public function query(){

echo 'hello,world!';

這樣就用單例模式實現了乙個資料庫類,使用下面的**可以檢測:

$db = db::getinstance();

//輸出hello world! 說明獲取例項成功

$db->query();

$db2 = db::getinstance();

//證明它們是同乙個例項

echo $db === $db2;

我們使用了db::getinstance()來獲取例項,因為構造方法被設定成私有,不能直接用new db()來建立例項。

理由是,只要使用new會重複建立例項。而是用getinstance()會將第一次建立的例項存放在靜態變數裡,重複利用。

不管使用多少次getinstance()方法,在同乙個頁面中始終只有乙個例項存在,這就是我們想要的結果~

php手冊中說,如果兩個物件有相同的屬性和方法,那麼下面的語句成立:

$db1 == $db2;

如果兩個物件是同乙個,那麼下面的語句成立:

$db1 === $db2;

PHP單例模式

模式對於oop開發人員尤其有用,因為他有助於建立穩定的api,並且仍然保持一定的靈活度。一種模式可以幫助我們定義負責完成特定任務的物件,還可以允許我們全部修改掉某個類而不用修改與這些類打交道的 前者被稱為類的職責,後者被稱為類的多型性。單例模式被當作職責模式,他用來在應用程式中建立乙個單一的功能訪問...

php單例模式

單例模式 單例類 1 建構函式需要標記為private 訪問控制 防止外部 使用new操作符建立物件 單例類不能在其他類中例項化,只能被其自身例項化 2 擁有乙個儲存類的例項的靜態成員變數 3 擁有乙個訪問這個例項的公共的靜態方法 常用getinstance 方法進行例項化單例類,通過instanc...

php 單例模式

單例模式 身份證號碼 單例類identitycardno 身份證號碼類 class identitycardno public function getinstance else return self instance private function setidentitycardno no p...