PHP の __invoke は、クラスの単一の責任を維持できる非常に便利な機能です
Example
class Invokable { public function __invoke() { echo '已被 invoke'; } }
Using
$invokable = new Invokable(); $invokable();
呼び出し可能なクラスを他のクラスに注入できます
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 中国語 Web サイトの他の関連記事を参照してください。