PHP实现监听事件

来源:互联网 发布:java图书销售管理系统 编辑:程序博客网 时间:2024/05/22 12:21

看到JavaScript中的监听事件不错于是想到这个可以在PHP里面实现吗?
首先谈一下个人对PHP中容器的粗略见解:
容器就是在一个容器类的static数组属性里面操作那些注册的类,如下:

// 容器类class Container{    private $s = array();    function __set($k, $c)    {        $this->s[$k] = $c;    }    function __get($k)    {        return $this->s[$k]($this);    }}// 对容器的操作$c = new Container();$c->bim = function () {    return new Bim();};$c->bar = function ($c) {    return new Bar($c->bim);};$c->foo = function ($c) {    return new Foo($c->bar);};// 从容器中取得Foo$foo = $c->foo;$foo->doSomething(); // Bim::doSomething|Bar::doSomething|Foo::doSomething

而今天要说的事件监听跟容器的实现放大基本上一致,也是对一个类的static数组属性进行操作,代码如下:

class MyClass{    public static function fnCallBack( $msg1 , $msg2 )    {        echo 'msg1:'.$msg1;        echo "<br />\n";        echo 'msg2:'.$msg2;    }}$className = 'MyClass';$fnName = "fnCallBack";$params = array( 'hello' , 'world' );call_user_func_array( array( $className , $fnName ) , $params );

其中call_user_func_array函数是PHP自带的,调用定义好的函数,第一个参数是方法名称,第二个参数是要调用函数用到的参数,具体详解请参考PHP手册,若call_user_func_array需要调用类里面的函数,则该函数必须是static,或者是已经实例化的类。
参考链接

原创粉丝点击