分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

php实现事件绑定

发布时间:2023-09-06 02:03责任编辑:白小东关键词:暂无标签
最近跟踪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<br>';var_dump($event);}//通过类的方法当回调函数class EventCallback {public function start3($event){echo 'start3<br>';}}$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)));


出现的结果如下:

start1asdaaobject(Event)[2]  public 'options' =>     array (size=2)      'name' => string 'hhhh' (length=4)      'age' => int 25


php实现事件绑定

原文地址:http://blog.51cto.com/chinalx1/2140806

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved