相关疑难解决方法(0)

在PHP中将实例方法作为参数传递

我想创建一个Listener类

class Listener {
    var $listeners = array();

    public function add(callable $function) {
        $this->listeners[] = $function;
    }

    public function fire() {
        foreach($this->listeners as $function) {
            call_user_func($function);
        }
    }
}

class Foo {
    public function __construct($listener) {
        $listener->add($this->bar);
    }

    public function bar() {
        echo 'bar';
    }
}



$listener = new Listener();
$foo = new Foo($listener);
Run Code Online (Sandbox Code Playgroud)

但是此代码失败并出现此错误:

注意:未定义的属性:第18行的index.php中的Foo :: $ bar

可捕获的致命错误:传递给Listener :: add()的参数1必须是可调用的,给定null,在第18行的index.php中调用,在第5行定义index.php

我究竟做错了什么?

php methods class argument-passing

27
推荐指数
2
解决办法
2万
查看次数

标签 统计

argument-passing ×1

class ×1

methods ×1

php ×1