2010-02-03 16 views
11

我目前正在學習yii框架並閱讀了他們的文檔。yii組件:事件和行爲?

但我仍然不明白的組件。這些是什麼。他們談論組件事件和行爲。

有人可以解釋這些條款給我,並給我真正的應用程序示例組件,它的事件和行爲可能是什麼?

將是有幫助的!

回答

5

CComponent本身並沒有太多的功能。它非常像Qt中的QObject。 CComponent可以引發事件,並可以委託事件(通過attachEventHandler())。

關於行爲,手冊上說:

行爲的方法可以 調用,就好像它們屬於 組件。多個行爲可以是 附加到相同的組件。

要將行爲附加到組件,請撥打 attachBehavior;並從組件中分離 行爲,請致電 detachBehavior。

行爲可以通過分別調用enableBehavior 或disableBehavior臨時啓用 或禁用。當 禁用時,行爲方法不能通過組件調用 。

從1.1.0版本開始,一個 行爲的屬性(經由吸氣劑和/或 制定者定義的任一其 公共成員變量或其 屬性)可以通過 組件它連接到被訪問。

,讓你模擬signals and slots機制,或strategy pattern(通過啓用或禁用行爲)的可能性。

Yii中的大部分類都有CComponent作爲基類。作爲用戶,當您創建自己的組件(位於protected/components /下)時,您將看到他們通過上述機制提供的好處。

你可以從這裏找到實現組件一個很好的起點:http://www.yiiframework.com/doc/guide/basics.component

4

Yii中,一個應用程序通過不同對象的交互,這些對象可以簡單地被認爲是應用程序的「組件」或「構建塊」。一個組件只是一個對象,一直在寫一個對象來執行或促進Yii應用程序中的特定任務。如果你在 [http://www.yiiframework.com/doc/guide/1.1/en/basics.mvc][1]看「Yii應用程序的典型工作流程」

你會發現除了從視圖和佈局(被視爲腳本)和索引。PHP,與他人交互的所有東西都是一個組件。當應用程序運行時,它們都執行不同的任務。

Yii中的幾乎所有東西都是一個組件(或從CComponent類派生而來)。

更具體地,

CComponent實現限定,使用屬性和事件的協議「

活動:事件可用於執行的動作序列(一個以上的)當一個組件發生特定的事情時,你可以定義一個事件並附加一些函數(動作)給該事件,現在,只要組件中產生了該事件,就會執行與該事件相關的所有函數。 ,這些都是有點類似於Wordpress中的鉤子概念。

事件中組件的特定應用被Yii定義爲

當你想中斷正常的應用程序流而不延伸基類是有用的。

行爲:行爲僅僅是爲您提供多重繼承,同時廢除了多重繼承的多種功能相同的名稱問題未通過PHP5支持的Yii的方式。如果你想繼承A和B類的屬性和方法,你擴展A類,然後附加B類作爲它的行爲,然後你可以使用B類的所有方法。現在,如果A和B都包含一個名爲'usefulfunction()'的函數,則對該函數的所有調用都將導致僅執行A類中的'有用函數'。如果A類和B類都作爲行爲添加到類中,那麼'有用函數'調用將導致從首先附加的行爲開始執行方法。

P.S. (我不是專家,所以請糾正我,如果我錯了任何地方。)