PHP 的__invoke 是一個很有用的特性,可以保持類別的單一職責
範例
class Invokable { public function __invoke() { echo '已被 invoke'; } }
使用
$invokable = new Invokable(); $invokable();
Invokeable 類別可以被注入到其他類中
class Foo { protected $invokable; public function __construct(Invokable $invokable) { $this->invokable = $invokable; } public function callInvokable() { $this->invokable(); } }
使用$this->invokable(); 來啟動Invokable 類,類別會去尋找名為invokable 的方法,因此下面操作將會報錯
$foo = new Foo($invokable); $foo->callInvokable(); // Call to undefined method Foo::invokable()
以下是正確的呼叫方法
public function callInvokable() { // 优先推荐 call_user_func($this->invokable); // 可选 $this->invokable->__invoke(); // 可选 ($this->invokable)(); }
更多PHP相關知識,請造訪PHP教學!
以上是php技巧:在實例中呼叫 Invoke 類型的類的詳細內容。更多資訊請關注PHP中文網其他相關文章!