【问题标题】:php multidimensional enum (const)php多维枚举(const)
【发布时间】:2018-01-05 13:51:12
【问题描述】:

我有一个活动枚举:

class Activities
{
    const running = 'running';
    ...
}

现在我想为常量添加一个 id:

class Activities
{
    const running = ['title' => 'running', 'id' => 1]
    ...
}

不幸的是,我在使用数组时没有自动完成。因此,我更喜欢使用类而不是数组。

但是对于 const 是不允许的。 (表达式不允许作为类常量值)

是否有解决方案可以为这种情况启用自动完成功能?

【问题讨论】:

  • 我认为没有解决方案。并且数组仅在 PHP 7 后可用
  • 自动完成什么?您是在谈论您的 IDE 吗?
  • @Oldskool 是的。这个想法不会自动完成数组键
  • 和重构(例如更改键名将不起作用。这就是我更喜欢类属性的原因

标签: php enums constants


【解决方案1】:

您可以删除const 并将您的枚举定义为public static

class Activities
{
    public static $running = ['title' => 'running', 'id' => 1];
}

【讨论】:

  • 我目前只有 PHP 5.3 并且 const 不起作用。也许在较新版本的 PHP 中它确实可以工作。
【解决方案2】:

这将使用一个数组,然后自动完成变得有点麻烦但仍然可能(如果我正确理解你的意图)你只需要针对 $array['activity'] 运行它

或者你必须创建一个类

class Activity {
    const activity='';
    const id='';
    cont etc='...';
}

然后你需要为每个你想玩的活动实例化一个新的活动。

但不确定它会比数组更方便。

对不起,如果答案有点令人费解,我已经有一段时间没有考虑用任何可区分的人类语言来考虑 php 了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-12
    • 2012-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多