PHP实现监听事件
看到JavaScript中的监听事件不错于是想到这个可以在PHP里面实现吗?首先谈一下个人对PHP中容器的粗略见解:容器就是在一个容器类的static数组属性里面操作那些注册的类,如下:// 容器类class Container{private $s = array();function __set($k, $c){$this->s[
·
看到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条内容
所有评论(0)