从PHP中的类成员调用函数

时间:2011-08-14 20:49:52

标签: php first-class-functions

说我有以下内容:

class C {
    private $f;

    public function __construct($f) {
        $this->f = $f;
    }

    public function invoke ($n) {
        $this->f($n); // <= error thrown here
    }
}

$c = new C(function ($m) {
    echo $m;
});

$c->invoke("hello");

以上引发了以下错误:

  

致命错误:调用未定义的方法C :: f()

我猜这是因为我试图使用调用对象成员函数的相同语法来调用回调函数$this->f

那么允许您调用存储在成员变量中的函数的语法是什么?

1 个答案:

答案 0 :(得分:1)

您需要使用call_user_func

public function invoke ($n) {
    call_user_func($this->f, $n);
}

更新

Christian指出call_user_func非常慢,而且速度更快:

function my_call_user_func($f) {
    $f();
}