事件监听与触发的PHP实现

本文介绍了PHP实现事件监听和触发的方法,供大家参考,具体分析如下:

我想php,如何实现一个事件监视器,参考jQuery事件绑定的思想,实现一个简单的。

主要功能:

1。绑定事件支持由事件绑定的多个操作,支持绑定一次性事件。

2。触发事件

三.取消事件

复制代码代码如下:类事件

{

受保护的静态侦听器=数组();



公共静态函数监听($事件,回调,$ = false){

如果(!is_callable(美元回调))返回false;

自::$听{ $事件} { } =阵列('callback= >美元回调,一旦= > $一次);

返回true;

}



公共静态函数1($事件,$回调){

返回自我::听($事件,$回调,true);

}



公共静态函数删除($事件,$ = NULL){

如果(is_null(美元指数))

unset(自::$听{ $事件});

其他的

unset(自::{ } {事件监听美元美元美元指数});

}



公共静态函数触发器(){

如果(!func_num_args())返回;

一美元= func_get_args();

事件= array_shift美元(合一);

如果(!isset(自::$听{ $事件}))返回false;

foreach((阵列)自::听{ }为美元美元事件美元指数= > $听){

美元美元回调=听{ 'callback};

听一次}自美元{::删除($事件,美元指数);

call_user_func_array($美元回调,args);

}

}

}

下面是一些调用的示例:

将代码复制如下:增加对步行事件的监视

事件::听(行走,功能()){

我在走路…;

});

增加监视/行走一次性事件

事件::听(行走,功能()){

我在倾听…;

},真的);

事件行走

事件::触发(行走的);

*

我在走路…

我在听…

* /

事件::触发(行走的);

*

我在走路…

* /



事件::一(',功能($name =){)

我是{ };

});



触发事件::(说','deeka '); / /我deeka输出

触发事件::(说','deeka '); / /不运行



类Foo

{

公共功能条(){

回声foo()::酒吧是calledn ;

}



公共功能测试(){

回声foo:foo():被称为中心:。json_encode(func_get_args())。n;

}

}



新富;



事件::听('bar,阵列($ foo,'bar '));

触发事件::('bar);



事件::听(测试,阵列($ foo,测试));

事件::触发(测试',1, 2, 3);



上课吧

{

公共静态函数富(){

回声栏::foo()是calledn ;

}

}



事件::听('bar1,阵列('bar ','foo '));

触发事件::('bar1);



事件::听('bar2 ','bar::foo);

Event:: trigger ('bar2');



函数条(){

回声酒吧()是calledn ;

}



事件::听('bar3 ','bar);

触发事件::('bar3);

希望本文能对大家的PHP程序设计有所帮助。