首頁 >php框架 >YII >yii事件和行為的區別

yii事件和行為的區別

(*-*)浩
(*-*)浩原創
2019-12-04 11:04:213541瀏覽

個人覺得,在 Yii 裡面,最難理解的就是事件(Event)和行為(behavior)了。這不僅是因為它們的概念比較難明,關鍵是它們的應用場景比較難明,不知道什麼時候應該使用事件和行為來發展。

yii事件和行為的區別

事件

事件模型就是設計模式中的「觀察者模式」:當物件的狀態發生了變化,那麼這個物件可以將該事件通知其它物件。

為了使用事件模型,需要實現這三個步驟:               (建議學習:yii架構

#1、定義事件;2、註冊事件句柄;3、觸發事件。

為什麼要做這三個步驟呢?因為對於 PHP 本身,它的執行過程不是以進程化來運行的,

所以 Yii 的事件觸發機制不會像 ActionScript 3 那樣,直接會觸發事件。

有人說,Yii 的事件概念跟 js 中的事件概念差不多,因為 Yii 是將事件綁定到 Yii::app() 的執行過程中。

行為

這裡先重新描述為什麼要使用行為。

有兩種方法可以對類別加入特性:

1、直接修改這個類別的程式碼,加入一些成員函數和成員變數;

#2、派生,透過子類別來擴充。

很明顯第二種方法比較容易維護、易擴展。但如果需要對一個類別添加多個特性(多人在不同時期),那麼需要進行多級派生,這顯然加大了維護成本。

在 Yii 裡面,透過行為類別綁定,元件將一個或多個 CBehavior 類別的成員方法和成員變數加到自己身上,並且在不需要的時候載入掉某些 CBehavior 類別。

同時,可以透過重寫 CBehavior::events 的方法,來實現目標類別的多個事件綁定。這些事件將會在目前行為綁定到目標類別的時候,一起被綁定上。

Yii2事件與行為總結

1)、事件用於在特定的時點,觸發執行預先設定的一段程式碼,需要使用到事件的類,都繼承自yii\base\Component。

2)、行為用於對類別的補充,透過將行為綁定到一個類,可以使類別具有行為本身所定義的屬性和方法,就好像類別本來就有這些屬性和方法一樣。

而且不需要寫一個新的類別去繼承或包含現有類別。

以上是yii事件和行為的區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn