php中的單例模式

2022-06-25 06:42:11 字數 1290 閱讀 3457

最近在讀《php物件導向、模式與實踐》一書,正好讀到了設計模式的相關章節,感覺需要整理下自己的學習內容,所以準備寫寫筆記,就當鞏固和複習了。

今天我們先從最簡單的模式——單例模式開始。

首先,我們需要知道,什麼是單例模式?

定義:生成乙個且只生成乙個物件例項的特殊類。

其次:單例模式有哪些使用場景?什麼地方會用到單例模式呢?

在我們平常開發中,單例模式使用場景還是比較多,比如說資料庫物件。

據我分析在這裡使用單例模式有四個原因:

1.資料庫物件在任何地方需均可訪問和使用,類似於全域性變數。

2.但是資料庫物件又不應該儲存在會被覆寫的全域性變數中,容易被覆寫。

3.系統中只需要乙個資料庫物件,這樣可以保證在一處進行查詢,在另外一處可以此次查詢的資訊(即資料同步)

總結:上面三條其實也是單例模式使用的訊號,如果業務出現上述的要求時,就說明可以使用單例模式了。

最後:如何使用php實現單例模式?

具體**如下:

1

<?php

2 # 單例模式實現** create by diysnake

3class

singleton413

14#用來例項化單例物件的靜態方法

15public

function

getinstance()

16

21return self::$instance;22

}

23 }

以上**需要注意的地方如下:

1.$instance變數必須是static的,因為靜態方法getinstance中無法使用$this來訪問物件屬性,只能通過關鍵字self來獲取類中的靜態屬性;還有,因不允許使用者在外部直接使用singleton::$instance獲取該變數的值,所以$instance變數必須是private或者protected的。

2.建構函式的許可權修飾符需要使用private或者protected,這樣當開發人員直接在外部使用new例項化該類時,會給出許可權相關的錯誤,可以指引其正確的例項化該類。

3.getinstance靜態方法中先判斷self::$instance是否有值,如果有直接返回;如果沒有,則例項化後再返回 

當然單例模式的具體**有多種,這裡給出的是其中一種。

注:因本人的技術有限,如果有理解錯誤的地方,還請各位批評指正,共同交流學習,謝謝。我會繼續努力的。

php中的單例模式

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

php中的單例模式

單例模式可以說是物件導向語言裡最常用 也是最簡單的一種模式。譯文單就是 單個例項,單個物件的意思,就是說我們去例項化乙個類的時候 不管呼叫多少次,都永遠只有乙個 例項,不會有多個,這樣就節省了記憶體分配開支。先簡單說下 單例模式的原理 將建構函式 construct設定為私有的 private,對外...

PHP中的單例模式

單例模式不能通過 new 類名 來例項化物件 class person public function getinterion return self interion public function setparam key,val public function getparam key 1 建...