You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过静态方法访问PHP枚举的value属性?

问题分析与解决方案

错误原因

你遇到的致命错误根源在于:调用Titular::minimus::int()时,int()是静态方法,此时self指向的是Titular枚举类本身,而value是每个枚举case实例的专属属性,并非枚举类的常量,因此self::value会触发未定义常量的错误。

正确实现方案

最符合PHP枚举设计逻辑的方案是将Trait中的int()改为实例方法,通过$this访问当前枚举case的value属性:

修改后的完整代码

trait Accessor
{
    public function int(): int
    {
        return $this->value;
    }
}

enum Titular: int
{
    use Accessor;

    case minimus = 1;
    case maximus = 2;
}

调用方式

由于枚举case是实例对象,需使用->调用实例方法:

echo Titular::minimus->int(); // 输出 1
echo Titular::maximus->int(); // 输出 2

关于静态方法的补充说明

如果坚持想用::调用,实际上不符合PHP枚举的设计逻辑——静态方法属于枚举类,无法直接关联到具体的case实例,因此没有简洁且合理的实现方式。上述实例方法的方案是最优选择。

内容的提问来源于stack exchange,提问作者John Miller

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 16:02:08