Yii2 設計模式

2022-08-27 01:45:12 字數 2664 閱讀 5291

一、 單例模式

顧名思義, 單例模式就是只例項一次,通過乙個介面去實現多處需要的同一類物件的需求。

例子:

1

public

function __construct($config =)

2

2、 工廠模式(策略模式)

顧名思義,工廠模式就是像工廠的機器化一樣取構造當前web應用所需的類物件。

例子:

1

public

static

function createobject($type, array

$params =)

2 elseif (is_array($type) && isset($type['class'])) elseif (is_callable($type, true

)) elseif (is_array($type

)) 14

15throw

new invalidconfigexception('unsupported configuration type: ' . gettype($type

));16 }

這是yii2底層的工廠化類物件介面,通過第三方**取實現當前web應用的工廠化模式。yii2引入的php底層預定義介面類,refectionclass對映類,通過對映取工廠化類物件。

3.、註冊模式

顧名思義,註冊模式則是通過一基類介面給基類的乙個全域性屬性,新增不同的元件物件。

例子:

1

public

function set($id, $definition)2

910if (is_object($definition) || is_callable($definition, true

)) elseif (is_array($definition

)) else

20 } else

23 }

這是yii2中間類服務定位器,實現不同應用元件的註冊。

1

public

function get($id, $throwexception = true)2

67if (isset($this->_definitions[$id

]))

1213

return

$this->_components[$id] = yii::createobject($definition

);14 } elseif ($throwexception

) 17

18return

null

;19 }

這是應用元件的獲取。

1/**

2* returns the database connection component.

3* @return \yii\db\connection the database connection.4*/

5public

function

getdb()69

10/**11

* returns the log dispatcher component.

1213

*/14

public

function

getlog()

1518

19/**20

* returns the error handler component.

2122

*/23

public

function

geterrorhandler()

2427

28/**29

* returns the cache component.

3031

*/32

public

function

getcache()

3336

37/**38

* returns the formatter component.

3940

*/41

public

function

getformatter()

4245

46/**47

* returns the request component.

48* @return \yii\web\request|\yii\console\request the request component.

49*/

50public

function

getrequest()

5154

55/**56

* returns the response component.

57* @return \yii\web\response|\yii\console\response the response component.

58*/

59public

function

getresponse()

60

4.、組裝模式

未完待續。。。。。。

Yii2 設計模式 簡單工廠模式

除了使用 new 操作符之外,還有更多的製造物件的方法。你將了解到例項化這個活動不應該總是公開進行,也會認識到初始化經常造成 耦合 問題。yii db mysql schema 中 建立 querybuilder 例項 public function createquerybuilder 這裡使用了...

yii2框架 yii2的主題化設計 十九

最近發現漏了很重要的一章章節知識點 關於yii2的主題化設計。所謂的主題話設計簡單點說就是通過設定不同的模板主題,可以快速切換,無需更改檢視渲染 的方法。在yii2中使用主題,首先要配置主題,在components中 view theme baseurl web themes blue pathma...

yii2框架 yii2自身的自動載入 三

上一節說完了composer的自動載入,下面我們來說一下yii2自身的自動載入。在我們的入口檔案,例如index.php,如下 comment out the following two lines when deployed to production defined yii debug or d...