php單例模式

2022-03-10 15:37:16 字數 1000 閱讀 5681

如果應用程式每次包含且僅包含乙個物件,那麼這個物件就是乙個單例(singleton)

某些應用程式資源是獨佔的,因為有且只有乙個此型別的資源。例如,通過資料庫控制代碼到資料庫的連線是獨佔的。您希望在應用程式中共享資料庫控制代碼,因為在保持連線開啟或關閉時,它是一種開銷,在獲取單個頁面的過程中更是如此.

<?php 

require_once("db.php");

class databaseconnection

private $_handle = null;

private function __construct()

public function handle()

}print( "handle = ".databaseconnection::get()->handle()."\n" );

print( "handle = ".databaseconnection::get()->handle()."\n" );

此**顯示名為 databaseconnection 的單個類。您不能建立自已的 databaseconnection,因為建構函式是專用的。但使用靜態 get 方法,您可以獲得且僅獲得乙個 databaseconnection 物件。此**的 uml 如圖 3 所示。

圖 3. 資料庫連線單元素

資料庫連線單元素

在兩次呼叫間,handle 方法返回的資料庫控制代碼是相同的,這就是最好的證明。您可以在命令列中執行**來觀察這一點。

% php singleton.php 

handle = object id #3

handle = object id #3

%

返回的兩個控制代碼是同一物件。如果您在整個應用程式中使用資料庫連線單元素,那麼就可以在任何地方重用同一控制代碼。

您可以使用全域性變數儲存資料庫控制代碼,但是,該方法僅適用於較小的應用程式。在較大的應用程式中,應避免使用全域性變數,並使用物件和方法訪問資源。**)

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...