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

藏色散人
发布: 2023-04-08 06:26:01
转载
2957 人浏览过

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
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板