回调存储在类成员中,如何调用?

时间:2014-11-06 15:56:28

标签: php

考虑以下课程:

class Callbackhandler() {
    private $cb;

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

    public function callme() {
        return $this->cb();
    }
}

像往常一样调用它:

$callback = function() { return "Hello"; };
$handler = new Callbackhandler($callback);
echo $handler->callme();

产生Call to undefined method错误,因为字段cb不是方法。如何在不使用call_user_func()的情况下从类内部正确调用回调?

1 个答案:

答案 0 :(得分:2)

您可能希望在__invoke上使用Closure

public function callme() {
  return $this->cb->__invoke();
} 

// ⇒ Hello% 

希望它有所帮助。