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


Callback stored in class member, how to invoke?

考虑以下类:

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();

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

您可能希望在Closure:上使用__invoke

public function callme() {
  return $this->cb->__invoke();
} 
// ⇒ Hello% 

希望能有所帮助。