日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

yii2中的事件和行为

發布時間:2025/3/17 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 yii2中的事件和行为 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Event 事件

事件是為了解耦...

注冊事件

使用"on add"添加屬性,注冊事件 使用on方法注冊事件. 第三個參數$data是監聽函數使用的參數, 第四個$append參數設置為false則把改事件的方法給添加到最前面,會先觸發 事件種類: 匿名函數:function($event){} 對象方法:[$object,"handleAdd"] 靜態類方法:["Page","handleAdd"] 全局函數:"handleAdd"

namespace frontend\tests;use yii\base\Component;class EventTest extends Component{}$a = new EventTest();$p = "on add";$a->$p = function($event){print "匿名函數";}function add($event){print "全局函數";}$a->on("add", "add");$a->trigger("add");

觸發事件

觸發事件的時候,會傳送一個$event對象給監聽函數.該事件對象有sender.name.$handled和data以及$_events屬性 sender 就是組件本身,事件的發送者 name 事件名稱 handled 設置該屬性可以阻止事件的繼續觸發..比如判斷登錄錯誤.驗證一個事件時出現錯誤.把這個設置為true.就不會繼續傳播了 $_events 存儲的數據是$_events[$name][$class] 事件名...類名..最后會根據類名再循環找到所有的父類的事件

$this->ensureBehaviors(); //確保自身behaviors()函數中的行為被添加if (!empty($this->_events[$name])) {if ($event === null) {$event = new Event;}if ($event->sender === null) {$event->sender = $this;}$event->handled = false;$event->name = $name;foreach ($this->_events[$name] as $handler) {$event->data = $handler[1];call_user_func($handler[0], $event);// stop further handling if the event is handledif ($event->handled) { //如果false則直接返回return;}}}// invoke class-level attached handlersEvent::trigger($this, $name, $event);//執行事件本身的events,

注意最后一步,你可以為某個有繼承關系的類自定義一個事件..這里會執行父類的事件

移除事件

使用off移除事件.沒什么好說的了

Behavior 行為

無論是事件還是行為,經常能夠看到這個方法ensureBehaviors() 該方法確保該組件默認的behaviors()方法中的組件總是被加載的... 沒弄明白,yii作者為什么這么寫...放在構造函數中執行一次不是更好...

行為的使用

  • 1.行為中的屬性,在該類中也可以使用
  • 2.行為中的方法,在該類中也可以使用
  • 3.繼承與Behavior類的行為,會將其自身的$_events中的事件綁定到該類

注冊行為

attachBehavior,attachBehaviors 這兩個首先會執行ensureBehaviors()確保自身的行為一定會被加載..

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的yii2中的事件和行为的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。