通过名称与编号调用PHP常数



我需要打印常数名称而不是数字:

class Type
{
    const UNKNOWN = 0;
    const PERSON = 1;
}

我有一个功能: entity->getType()在这种情况下返回数字0或1。

我如何使用PHP将const未知或人转换为文本而不这样做:

$entity_types = [
            0 => 'UNKNOWN',
            1 => 'PERSON'];
printf('Type: %s' . PHP_EOL, $entity_types[$entity->getType()]);

但通过致电:

Type::$entity->getType()

实际上,您的问题没有真正的解决方案。简单的例子,为什么这在PHP中无法使用:

const VAR1 = 1;
const VAR2 = 1;

这是类常数的总有效用法,但是由于值1有多种用途,因此1的映射没有任何名称。

可能有一种使用反射API以匹配值返回第一个常数的方法,但是在生产中进行此操作并不建议,因为这不是很快(正如我之前说的,如果是不安全的,如果您以后更改代码)

如果您想提高const值的可读性,则应考虑使用字符串作为常数而不是数字的值。

最新更新