【发布时间】:2019-05-29 13:16:22
【问题描述】:
我有这个代码:
const TYPE_A = 'a';
const TYPE_B = 'b';
const TYPE_C = 'c';
const TYPE_ARRAY = [
TYPE_A,
TYPE_B,
TYPE_C,
];
我使用 TYPE_ARRAY 通过 in_array() 来检查类型是否有效。但我还需要做一个正则表达式检查,但我不能直接使用这个数组。我需要一个格式为:“a|b|c”的字符串,相当于:
implode('|', TYPE_ARRAY);
但不要这样做:
const TYPE_REGEX_STR = "a|b|c";
我想知道是否无法使用正则表达式将 const TYPE_ARRAY 自动转换为常量。所以是这样的:
const TYPE_REGEX_STR = implode('|', TYPE_ARRAY);
我知道最后一个例子是不可能的,但是有没有其他方法可以做到这一点?
这可能看起来很傻,但是当您有一个具有多种可能类型的数组时,最好基于 const TYPE_ARRAY 创建 const TYPE_REGEX_STR 而不是单独定义它。这样添加新类型会更容易:只需将其添加到数组中,正则表达式字符串就会自动生成。
顺便说一句,我需要 TYPE_REGEX_STR 作为常量,因为 Symfony 可以在路由要求中使用常量,但不能使用静态函数。
【问题讨论】:
标签: php