具有可变索引的枚举

Ric*_*ard 0 php oop enums

我不确定我的问题的正确措辞是什么,但我添加了一个enum(NP_PostTypeType)因为我需要知道我的初始枚举(NP_PostType)中每个项目的类型是什么.

我将当前的PostType存储在$postType一个方法中,现在在该方法中我需要提取每种类型的类型.

我尝试做的是:switch(NP_PostTypeType::$type),但这会产生:Fatal error: Access to undeclared static property: NP_PostTypeType::$type

这些是我的2个枚举:

abstract class NP_PostType extends BasicEnum {
    const Event = "event";
    const Job = "job";
    const Quote = "quote";
    const Status = "status";
    const Video = "video";
}

abstract class NP_PostTypeType extends BasicEnum {
    const Event = "type";
    const Job = "type";
    const Quote = "format";
    const Status = "format";
    const Video = "format";
}
Run Code Online (Sandbox Code Playgroud)

我该怎么做?

小智 5

你不能像使用静态属性那样访问常量,常量函数是你的解决方案:

$type = constant('NP_PostTypeType::' . $postType);
Run Code Online (Sandbox Code Playgroud)

但是要小心,你的$postType案例必须匹配你的NP_PostTypeType常量名称(目前不是这种情况),你应该将你的NP_PostType类更新为:

abstract class NP_PostType extends BasicEnum {
    const Event = "Event";
    const Job = "Job";
    const Quote = "Quote";
    const Status = "Status";
    const Video = "Video";
}
Run Code Online (Sandbox Code Playgroud)