php技巧:在实例中调用 Invoke 类型的类-php教程

资源魔 32 0
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开发教程 php开发资料 php开发自学

抱歉,评论功能暂时关闭!