【问题标题】:PHP attribute construct callPHP属性构造调用
【发布时间】:2022-01-21 14:21:45
【问题描述】:

我想在每次将特定属性分配给函数时执行代码。

例如:

<?php
#[Attribute]
class exampleAttribute
{
    public function __construct()
    {
        echo "exampleAttribute called";
    }
}

#[exampleAttribute()]
function exampleFunction()
{
    //...
}

但在本例中,从不调用 echo 语句。我该怎么做?

【问题讨论】:

    标签: php attributes php-8


    【解决方案1】:

    属性不会自动实例化,因为没有特定的时间“被附加”——它们只是该函数定义的一部分,就像类型和参数名称一样。

    相反,您必须通过反射访问它们,如discussed in the PHP manual。具体来说,您将使用ReflectionFunction 对象读取该属性,然后使用newInstance 方法实例化它。只有当你这样做时,你的echo 行才会运行。

    【讨论】:

    • 那么,有没有办法获取所有具有特定属性的功能?
    • @AaronJunker 我不知道。我认为常见的方法是对所有内容进行脚本循环,并根据结果生成各种缓存。
    猜你喜欢
    • 2021-12-15
    • 1970-01-01
    • 2021-03-07
    • 2012-07-06
    • 1970-01-01
    • 1970-01-01
    • 2014-08-21
    • 2016-08-29
    • 2019-05-06
    相关资源
    最近更新 更多