php 事件绑定,php实现事件绑定

php实现事件绑定

发布时间:2020-04-06 10:22:27

来源:51CTO

阅读:1247

作者:china_lx1

最近跟踪yii源码  里面涉及到了绑定事件行为之类,于是自己手写了一个最简单的事件绑定实现

class EventHandle {

private static $_map = array();

//类似jquery绑定事件

public function on($name, $callback)

{

if(!is_callable($callback))

return false;

if(!isset(self::$_map[$name]))

{

self::$_map[$name] = array();

}

self::$_map[$name][] = $callback;

}

//触发事件

public function trigger($name, $event)

{

if(!isset(self::$_map[$name]))

return false;

$function_arr = self::$_map[$name];

foreach($function_arr as $function)

{

call_user_func($function, $event);

}

return true;

}

//移除某个事件特定的回调函数

public function remove($name, $callback)

{

if(!isset(self::$_map[$name]))

return false;

$map = self::$_map[$name];

$pos = array_search($callback, $map, true);

if($pos >= 0)

{

array_splice($map, $pos, 1);

self::$_map[$name] = $map;

}

return true;

}

}

//事件对象

class Event {

public static $options = array();

public function __construct($options = array())

{

$this->options = $options;

}

}

//通过函数当回调函数

function start1($event)

{

echo 'start1asdaa
';

var_dump($event);

}

//通过类的方法当回调函数

class EventCallback {

public function start3($event)

{

echo 'start3
';

}

}

$eventhandle = new EventHandle();

$eventhandle->on('start', "start1");

$eventhandle->on('start', array("EventCallback", "start3"));

$eventhandle->remove('start', array("EventCallback", "start3"));

$eventhandle->trigger('start', new Event(array('name' => 'hhhh', 'age' => 25)));

出现的结果如下:start1asdaa

object(Event)[2]  public 'options' =>

array (size=2)

'name' => string 'hhhh' (length=4)

'age' => int 25

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值