php的Invoke 用法 - 银河源码

银河源码

高品质源码点击这里给我发消息PHP-LotusAdmin官方论坛

php的Invoke 用法

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)();
}

如果支付后未自动下载,请主动联系站长,站长QQ 610176732

当前页面:银河源码 » php的Invoke 用法

评论 4

文章评论已关闭!

  1. 测试下网站评论

    lotus 2019-04-24    
  2. 测试下网站2

    lotus 2019-04-23    
  3. 测试下

    lotus 2019-04-23    
    • 测试下

      闻海南 2019-04-24