php行為和事件是什么
行為
行為(Behavior)是ThinkPHP擴(kuò)展機(jī)制中比較關(guān)鍵的一項(xiàng)擴(kuò)展,行為既可以獨(dú)立調(diào)用,也可以綁定到某個(gè)標(biāo)簽中進(jìn)行偵聽(tīng)
這里先重新描述一下為什么要使用行為。
有兩種辦法可以對(duì)類添加特性:
1、直接修改這個(gè)類的代碼,添加一些成員函數(shù)和成員變量;
2、派生,通過(guò)子類來(lái)擴(kuò)展。
很明顯第二種方法更加易維護(hù)、易擴(kuò)展。但是如果需要對(duì)一個(gè)類添加多個(gè)特性(多人在不同時(shí)期),那么需要進(jìn)行多級(jí)派生,這顯然加大了維護(hù)成本。
在 Yii 里面,通過(guò)行為類綁定,組件將一個(gè)或多個(gè) CBehavior 類的成員方法和成員變量添加到自己身上,并且在不需要的時(shí)候載掉某些 CBehavior 類。
同時(shí),可以通過(guò)重寫(xiě) CBehavior::events 的方法,來(lái)實(shí)現(xiàn)對(duì)目標(biāo)類的多個(gè)事件綁定。這些事件將會(huì)在當(dāng)前行為綁定到目標(biāo)類的時(shí)候,一起被綁定上。
事件
事件模型就是設(shè)計(jì)模式中的“觀察者模式”:當(dāng)對(duì)象的狀態(tài)發(fā)生了變化,那么這個(gè)對(duì)象可以將該事件通知其它對(duì)象。
為了使用事件模型,需要實(shí)現(xiàn)這三個(gè)步驟:1、定義事件;2、注冊(cè)事件句柄;3、觸發(fā)事件。
為什么要做這三個(gè)步驟呢?因?yàn)閷?duì)于 PHP 本身,它的執(zhí)行過(guò)程不是以進(jìn)程化來(lái)運(yùn)行的,
以上就是php行為和事件是什么的詳細(xì)內(nèi)容,希望對(duì)你有所幫助。