【发布时间】:2021-02-04 00:47:43
【问题描述】:
在 PHP 8 中,引入了 ReflectionAttribute 类。它类似于 Java、Typescripts 等中的注解。例如,每次您想使用属性的属性时,您必须执行以下操作:
$attributeReflection = ...;
...
$attribute = $attributeReflection->newInstance();
$message = $attribute->getMessage();
$attributeReflection 是 ReflectionAttribute 的一个实例。属性本身如下:
#[Attribute(Attribute::ALL)]
class MyAttribute{
public function __construct(
public ?string $message = ''
){}
}
And 用于属性如下
class Foo{
#[MyAttribute("my message")
public ?string $id = null;
}
如您所见,每次我想获取属性的消息时,我都必须创建它的一个新实例。虽然这种情况下的消息永远不会改变。
我正在寻找一种方法来避免使用新实例并使用共享实例。
有可能吗?
【问题讨论】: