Cakephp事件機制嘗鮮

來源:互聯網
上載者:User

標籤:style   blog   http   io   color   ar   使用   sp   div   

cakephp 很老的架構了,嘗鮮算是牽強,不過就算很先進的架構例如YII都有這些機制,不過仍然沒有理解

 

手冊地址: http://book.cakephp.org/2.0/en/core-libraries/events.html

使用方式:

    

1、在需要支援事件的類中(包括、模型、控制器等)使用CakeEventListener 介面並且,實現介面規定的所有方法。

<?phpApp::uses( ‘AppModel‘, ‘Model‘ );App::uses(‘CakeEventListener‘, ‘Event‘);class COrder extends AppModel implements CakeEventListener { public function implementedEvents() { return array( ‘Model.COrder.test‘ =>array( ‘callable‘=> ‘eventTest‘, ‘passParams‘=>true ), ); } public function eventTest($order) { //TODO pr($order);exit(); }}
2、註冊事件,註冊事件可以在APPController中操作,全域註冊所有的事件       
// 註冊事件 $this->loadModel("COrder"); $this->getEventManager()->attach($this->COrder);
3、觸發事件,在系統任意一個地方都可以使用觸發事件機制,使用方法如下      
//觸發事件 $event = new CakeEvent(‘Model.COrder.test‘, $this, array( ‘order‘ =>array(‘a‘) )); $this->getEventManager()->dispatch($event);

 心得:使用事件機制可以在一定程度上解耦,不必每次都要去引入需要的額對象,例如在模型裡面引入其他模型是不合適且不方便的,但是PHP的事件機製造成了程式碼不利於跟蹤,程式可讀性被破壞,同時也不能很好地進行事務操作。所以請謹慎使用cakePHP的事件機制。

Cakephp事件機制嘗鮮

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.