PHP 在属性中使用 ENUM
P粉593118425
2023-08-26 23:17:00
<p>看下面的代码:</p>
<pre class="brush:php;toolbar:false;"><?php
enum Types:string {
case A = 'a';
case B = 'b';
}
#[Attribute(Attribute::TARGET_CLASS)]
class MyAttribute {
public function __construct(public readonly array $mapping)
{
}
}
#[MyAttribute(mapping: [Types::A->value => ''])]
class Entity {
}
</pre>
<p>有错误 <code>常量表达式包含无效操作</code>。我想在我的属性中使用枚举值来定义配置。看起来这是 php 中的错误。应该报告还是什么?</p>
问题是,当我们调用 Types::A->value 时,它实际上创建了一个枚举的实例,它不是一个常量值。 为了解决这个问题,定义一个常量并引用它。
注意这个php 中的问题