2014-11-06 70 views
1

考慮下面的類:回調存儲在類成員中,如何調用?

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

如果你不想使用'call_user_func'你需要將類成員分配給一個本地成員,並用'$ member();' – DarkBee 2014-11-06 16:04:27

回答

2

你可能想在Closure使用__invoke

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

// ⇒ Hello% 

希望它能幫助。

+0

調用該成員我正在寫一個帶有變量和'call_user_func ',但是......乾杯。 – Mike 2014-11-06 16:09:12

+0

我正在寫一個額外的問題,只爲你我親愛的朋友。 – Mike 2014-11-06 16:11:34

+0

這真的是一個新問題,所以,如果你得到一個片刻:http://stackoverflow.com/questions/26784428/invoke-on-callable-array-or-string – Mike 2014-11-06 16:28:24

相關問題