設計模式PHP版 單例模式

2021-09-13 12:45:25 字數 956 閱讀 8878

單例可以用於產生唯一不重複的數字碼,比如訂單號。

<?php

final class mysql // final 表示不允許被繼承

return self::$instance; // 已經例項化過了就直接返回該例項

}/**

* 建構函式為私有,這樣就不能new了

*/private function __construct()

{}/**

* 防止物件被複製

*/private function __clone()

}/**

* 無論這裡產生多少個,它們都是同乙個例項,因為例項化過了就會return

*/$mysql1 = mysql::getinstance(); // 獲取例項

$mysql2 = mysql::getinstance(); // 獲取例項

$mysql3 = mysql::getinstance(); // 獲取例項

/** * 在同乙個例項的情況下,給int賦值,就會覆蓋

*/$mysql1->int = 1;

$mysql2->int = 2;

$mysql3->int = 3;

/** * 此時,還是同乙個例項,上面最後覆蓋的是3,那麼這裡就是列印了三次例項中的int變數

*/print_r($mysql1->int);

print_r($mysql2->int);

print_r($mysql3->int);

如果以new的形式,最終列印結果就是123。

但是單例使用了靜態修飾,當進入頁面並使用了這個類時開始,直到頁面執行完畢前,這個$instance都會一直存於記憶體。

所以當你mysql::getinstance();獲取例項的時候,其實獲取的都是記憶體中同乙個$instance

php設計模式 單例模式

靜態方法所訪問的屬性也必須是static的。靜態方法呼叫靜態變數使用方式是self 靜態變數名 靜態方法呼叫靜態方法使用方式是self 靜態方法名 類的例項可以訪問靜態方法,但不可以訪問靜態變數 package name subpackage name category name author ad...

PHP設計模式 單例模式

單例模式就是保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。通常我們可以讓乙個全域性變數使得乙個物件被訪問,但是不能防止你例項化多個變數,乙個最好的辦法就是讓類自身負責儲存它的唯一例項,這個類可以保證沒有其它例項可被建立,並且他可以提供乙個訪問該例項的方法。下面提供兩種單例模式的例子 例1 ...

PHP設計模式 單例模式

單例模式的必要性 1.目的 確保某乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項。2.要點 1 某乙個類只能有乙個例項 2 必須自行建立這個例項 3 必須自行向整個系統提供這個例項。3.作用 避免重複例項化,節省系統資源。例如在資料庫操作方面,會大量存在資料庫連線操作,單例類可以避免多次...