我需要打印常数名称而不是数字:
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值的可读性,则应考虑使用字符串作为常数而不是数字的值。