PHP ヒント: インスタンスで Invoke 型クラスを呼び出す

藏色散人
リリース: 2023-04-08 06:26:01
転載
2972 人が閲覧しました

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 サイトの他の関連記事を参照してください。

関連ラベル:
php
ソース:learnku.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート