您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

php是怎么实现事件监听的

2024/3/5 22:02:47发布21次查看
主要功能:
1.绑定事件 支持一个事件绑定多个动作,支持绑定一次性事件
2.触发事件
3.注销事件
代码如下:
class event{ protected static $listens = array(); public static function listen($event, $callback, $once=false){ if(!is_callable($callback)) return false; self::$listens[$event][] = array('callback'=>$callback, 'once'=>$once); return true; } public static function one($event, $callback){ return self::listen($event, $callback, true); } public static function remove($event, $index=null){ if(is_null($index)) unset(self::$listens[$event]); else unset(self::$listens[$event][$index]); } public static function trigger(){ if(!func_num_args()) return; $args = func_get_args(); $event = array_shift($args); if(!isset(self::$listens[$event])) return false; foreach((array) self::$listens[$event] as $index=>$listen){ $callback = $listen['callback']; $listen['once'] && self::remove($event, $index); call_user_func_array($callback, $args); } }}
相关推荐:《php入门教程》
以下是一些调用的例子:
代码如下:
// 增加监听walk事件event::listen('walk', function(){ echo "i am walking...n";});// 增加监听walk一次性事件event::listen('walk', function(){ echo "i am listening...n";}, true);// 触发walk事件event::trigger('walk');/*i am walking...i am listening...*/event::trigger('walk');/*i am walking...*/ event::one('say', function($name=''){ echo "i am {$name}n";}); event::trigger('say', 'deeka'); // 输出 i am deekaevent::trigger('say', 'deeka'); // not run class foo{ public function bar(){ echo "foo::bar() is calledn"; } public function test(){ echo "foo::foo() is called, agrs:".json_encode(func_get_args())."n"; }} $foo = new foo; event::listen('bar', array($foo, 'bar'));event::trigger('bar'); event::listen('test', array($foo, 'test'));event::trigger('test', 1, 2, 3); class bar{ public static function foo(){ echo "bar::foo() is calledn"; }} event::listen('bar1', array('bar', 'foo'));event::trigger('bar1'); event::listen('bar2', 'bar::foo');event::trigger('bar2'); function bar(){ echo "bar() is calledn";} event::listen('bar3', 'bar');event::trigger('bar3');
以上就是php是怎么实现事件监听的的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product