每次为函数分配特定属性时,我都要执行代码。
例如:
<?php
#[Attribute]
class exampleAttribute
{
public function __construct()
{
echo "exampleAttribute called";
}
}
#[exampleAttribute()]
function exampleFunction()
{
//...
}
但在本例中,echo语句从未被调用。我该怎么做?
属性不会自动实例化,因为当它们"附身"-它们只是该函数定义的一部分,就像类型和参数名称一样。
相反,您必须通过反射来访问它们,正如PHP手册中所讨论的那样。具体来说,您将使用ReflectionFunction
对象读取属性,然后使用newInstance
方法实例化它。只有当您这样做时,您的echo
线路才会运行。