1. 程式人生 > >Yii框架-事件

Yii框架-事件

事件

//在類中定義一個事件,推薦使用類常量表示事件名
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) { //事件處理邏輯 });

可以附加一個或多個處理器到一個事件。當事件被觸發,已附加的處理器將按附加次序依次呼叫。