Вызовите константу PHP по имени против номера

Мне нужно напечатать имя константы вместо числа:

class Type
{

const UNKNOWN = 0;
const PERSON = 1;
}

У меня есть функция: entity->getType()
Которые возвращают число в этом случае 0 или 1.

Как я могу использовать PHP для преобразования const UNKNOWN или PERSON в текст, не делая этого:

$entity_types = [
0 => 'UNKNOWN',
1 => 'PERSON'];

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

Но по телефону:

Type::$entity->getType()?

0

Решение

На самом деле, нет реального решения вашей проблемы. Простой пример, почему это не может работать в PHP:

const VAR1 = 1;
const VAR2 = 1;

Это полное допустимое использование констант класса, но так как есть многократное использование значения 1нет отображения 1 на любое имя.

Возможно, есть способ использовать API отражения для возврата первой константы с совпадающим значением, но делать это в производственной среде не рекомендуется, поскольку это не очень быстро (и, как я уже говорил, также небезопасно, если вы позже измените ваш код)

Если вы хотите улучшить читабельность константных значений, вам следует подумать об использовании строковых значений как констант, а не чисел.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector