PHP实现监听事件

看到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,或者是已经实例化的类。
参考链接

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值