1. 程式人生 > 其它 >入門4關鍵概念

入門4關鍵概念

元件

元件是 Yii 應用的主要基石。是yii\base\Component類或其子類的例項。 三個用以區分它和其它類的主要功能有:

因為元件功能的強大,他們比常規的物件(Object)稍微重量級一點,因為他們要使用額外的記憶體和 CPU 時間來處理事件行為

屬性

在 PHP 中,類的成員變數也被稱為屬性。它們是類定義的一部分, 用來表現一個例項的狀態(也就是區分類的不同例項)。

事件

事件可以將自定義程式碼“注入”到現有程式碼中的特定執行點。 附加自定義程式碼到某個事件,當這個事件被觸發時,這些程式碼就會自動執行。 例如,郵件程式物件成功發出訊息時可觸發messageSent

事件。 如想追蹤成功傳送的訊息,可以附加相應追蹤程式碼到messageSent事件。

Yii 引入了名為yii\base\Component的基類以支援事件。 如果一個類需要觸發事件就應該繼承yii\base\Component或其子類。

行為

行為是yii\base\Behavior或其子類的例項。 行為,也稱為mixins, 可以無須改變類繼承關係即可增強一個已有的元件類功能。 當行為附加到元件後,它將“注入”它的方法和屬性到元件, 然後可以像訪問元件內定義的方法和屬性一樣訪問它們。 此外,行為通過元件能響應被觸發的事件,從而自定義或調整元件正常執行的程式碼。

比較行為與 Traits

雖然行為類似於

traits,它們都將自己的屬性和方法“注入”到主類中, 但它們在許多方面有所不同。如下所述,他們都有優點和缺點。 它們更像互補類而非替代類。

使用行為的原因

行為類像普通類支援繼承。另一方面,traits 可以視為 PHP 語言支援的複製貼上功能, 它不支援繼承。

行為無須修改元件類就可動態附加到元件或移除。 要使用 traits,必須修改使用它的類。

行為是可配置的,而 traits 則不可行。

行為可以通過響應事件來定製元件的程式碼執行。

當附屬於同一組件的不同行為之間可能存在名稱衝突時, 通過優先考慮附加到該元件的行為, 自動解決衝突。由不同 traits 引起的名稱衝突需要通過 重新命名受影響的屬性或方法進行手動解決。

使用 Traits 的原因

Traits 比行為更有效,因為行為是既需要時間又需要記憶體的物件。

因為 IDE 是一種本地語言結構,所以它們對 Traits 更友好。

配置

在 Yii 中,建立新物件和初始化已存在物件時廣泛使用配置。 配置通常包含被建立物件的類名和一組將要賦值給物件屬性的初始值。 還可能包含一組將被附加到物件事件上的控制代碼。 和一組將被附加到物件上的行為

別名

別名用來表示檔案路徑和 URL,這樣就避免了在程式碼中硬編碼一些絕對路徑和 URL。 一個別名必須以@字元開頭,以區別於傳統的檔案路徑和 URL。 沒有前導@定義的別名將以@字元作為字首。

Yii 預定義了大量可用的別名。例如,別名@yii指的是 Yii 框架本身的安裝目錄, 而@web表示的是當前執行應用的根 URL。

類自動載入

Yii 依靠類自動載入機制來定位和包含所需的類檔案。

服務定位器

服務定位器是一個瞭解如何提供各種應用所需的服務(或元件)的物件。在服務定位器中, 每個元件都只有一個單獨的例項,並通過ID 唯一地標識。 用這個 ID 就能從服務定位器中得到這個元件。

在 Yii 中,服務定位器是yii\di\ServiceLocator或其子類的一個例項。

最常用的服務定位器是application(應用)物件,可以通過\Yii::$app訪問。 它所提供的服務被稱為application components(應用元件), 比如:requestresponseurlManager元件。可以通過服務定位器所提供的功能, 非常容易地配置這些元件,或甚至是用你自己的實現替換掉他們。

依賴注入容器

依賴注入(Dependency Injection,DI)容器就是一個物件,它知道怎樣初始化並配置物件及其依賴的所有物件。

依賴注入

Yii 通過yii\di\Container類提供 DI 容器特性。 它支援如下幾種型別的依賴注入:

  • 構造方法注入;
  • 方法注入;
  • Setter 和屬性注入;
  • PHP 回撥注入.
Linux等環境軟體安裝