Yii框架-事件
阿新 • • 發佈:2018-11-06
事件
//在類中定義一個事件,推薦使用類常量表示事件名
const EVENT_HELLO = 'hello';
事件通過呼叫 yii\base\Component::trigger() 方法觸發,此方法須傳遞事件名。
namespace app\components;
use yii\base\Component;
use yii\base\Event;
class Foo extends Component
{
const EVENT_HELLO = 'hello';
public function bar()
{
$this ->trigger(self::EVENT_HELLO);
}
}
事件處理器
事件處理器是一個PHP 回撥函式,當它所附加到的事件被觸發時它就會執行。呼叫 yii\base\Component::on() 方法來附加處理器到事件上。如:
$foo = new Foo;
// 處理器是全域性函式
$foo->on(Foo::EVENT_HELLO, 'function_name');
// 處理器是物件方法
$foo->on(Foo::EVENT_HELLO, [$object, 'methodName']);
// 處理器是靜態類方法
$foo->on( Foo::EVENT_HELLO, ['app\components\Bar', 'methodName']);
// 處理器是匿名函式
$foo->on(Foo::EVENT_HELLO, function ($event) {
//事件處理邏輯
});
可以附加一個或多個處理器到一個事件。當事件被觸發,已附加的處理器將按附加次序依次呼叫。