YII中的Behavior何時用到?也就是在什麼情況下將代碼要放在Behavior中?

來源:互聯網
上載者:User
我的理解是:Behavior的目的就是重用。
當把一個Behavior加入到Component後,這個Component就有了這個Behavior的方法、屬性、事件。
但是我還是搞不清楚什麼時候要使用Behavior,各位大神能不能舉個例子,什麼時候將代碼放在Behaviors裡面?

附上My Code:

'sayHello'        ));}public function   sayHello(){    echo 'hello world!!!';}}?>
getName();//   }// public function  actionEvent(){//    $com=Yii::createComponent('application.components.TestComponent');//    $com->onClick=array($this,'sayHello');//調用了一個不存在屬性,會使用魔術方法//    $com->onClick(new CEvent($com));// }public function   actionBehavior(){ $com=Yii::createComponent('application.components.TestComponent'); $com->attachBehavior('test','ext.behaviors.TestBehavior');$com->sayHello();$com->onClick(new CEvent($com)); //behavior 中的seyHello綁定了onClick。調用onClick就會調用sayHello()}// public function  sayHello(){//     header('Content-type:text/html;charset=utf-8');//  echo 'hello world';// }}?>

回複內容:

我的理解是:Behavior的目的就是重用。
當把一個Behavior加入到Component後,這個Component就有了這個Behavior的方法、屬性、事件。
但是我還是搞不清楚什麼時候要使用Behavior,各位大神能不能舉個例子,什麼時候將代碼放在Behaviors裡面?

附上My Code:

'sayHello'        ));}public function   sayHello(){    echo 'hello world!!!';}}?>
getName();//   }// public function  actionEvent(){//    $com=Yii::createComponent('application.components.TestComponent');//    $com->onClick=array($this,'sayHello');//調用了一個不存在屬性,會使用魔術方法//    $com->onClick(new CEvent($com));// }public function   actionBehavior(){ $com=Yii::createComponent('application.components.TestComponent'); $com->attachBehavior('test','ext.behaviors.TestBehavior');$com->sayHello();$com->onClick(new CEvent($com)); //behavior 中的seyHello綁定了onClick。調用onClick就會調用sayHello()}// public function  sayHello(){//     header('Content-type:text/html;charset=utf-8');//  echo 'hello world';// }}?>

Behavior翻譯成行為,行為即是方法。也就說說在Yii中,可以隨意給類(必須是CComponent子類)添加類本身不存在的方法或新的方法,兩個例子:

  1. CTimestampBehavior 這個Behavior是通過覆蓋CActiveRecord的beforeSave方法來實現自動填滿添加/修改時間。
  2. 在使用Yii上傳類CUploadedFile的時候可能會遇到這樣的問題:公司有自己的儲存服務,那麼CUploadedFile內建的儲存到本地方法就不能用了。那麼通過給CUploadedFile類添加一個Behavior類,在這個Behavior類裡寫合適當前環境的上傳方式,調用的時候直接正常調用Behavior裡的類,這個過程和調用CUploadedFile中的類沒什麼兩樣。

其實我用了很久也基本沒接觸過自己去寫behavior,唯一用到的就是http://www.yiiframework.com/doc/api/1.1/CTimestampBehavior這個內建的behavior,來自動儲存Model時間相關欄位。因為平時滿足需求就用懶得方法,沒去想利用這個。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.