php技巧:在實例中呼叫 Invoke 類型的類

藏色散人
發布: 2023-04-08 06:26:01
轉載
2972 人瀏覽過

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中文網其他相關文章!

相關標籤:
php
來源:learnku.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板