php 事件监听器实例

监视器主要功能

  • .绑定事件 支持一个事件绑定多个动作
  • 触发事件
class Event
{
    static $list = [];

    //绑定事件
    public static function listen($name, $function)
    {
        //验证 $function 是否是闭包
        if (!is_callable($function)) {
            echo '不是闭包';
            exit;
        }else{
            var_dump($function);
        }
        self::$list[$name][] = $function;
    }

    //触发
    public static function trigger($name, $param)
    {
        foreach (self::$list[$name] as $k => $v) {
            //var_dump($v);die;
            call_user_func_array($v, $param);
        }
    }
}

调用代码例子

class fly
{
    public function run()
    {
        echo '废了';
    }
}

$fly = new fly();
Event::listen('walk', [$fly, 'run']);
Event::listen('walk', function ($a) {
    var_dump($a);
});
Event::trigger('walk', ['d']);
原文地址:https://www.cnblogs.com/zxqblogrecord/p/14298992.html