В языке C# есть перечисления (enum). Удобная вещь, чтобы не заводить магические числа/строки/значения. Я решил сделать подобное на PHP. Сделал это в виде класса с константами. Например так:
class ColorEnum {
const RED = 'red';
const GREEN = 'green';
const BLUE = 'blue';
}
Но проблема заключается в том, что для большинства этих классов перечислений я должен показывать пользователю их наименования на русском, например если это какой-нибудь dropdown в форме или карточке детальной информации об объекте (выбранный цвет: красный). Из-за этого в каждый класс перечисления мне приходится добавлять метод, который возвращает словарь, с ключом константы и значением-на русском:
class ColorEnum {
const RED = 'red';
const GREEN = 'green';
const BLUE = 'blue';
private static $colorsMap = [self::RED => 'Красный', self::GREEN => 'Зелёный', self::BLUE => 'Синий'];
public static function getColorsMap():array {
return self::$colorsMap;
}
}
Как итог: я потерял "чистоту" и смысл перечислений (как мне кажется).
Вопрос: при текущих задачах правильно ли я сделал или нужно класс перечислений оставлять "чистым", а методы и словари ключ-значение для пользователя где-то как-то еще формировать? Где и как?
Самый красивый способ который мне известен
class ColorEnum
{
const RED = 'red';
const GREEN = 'green';
const BLUE = 'blue';
public static function getColor(): array
{
return [
self::RED => 'Красный',
self::GREEN => 'Зелёный',
self::BLUE => 'Синий',
];
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Запускаю из консоли php файл на выполнение, но никакого результата нетОшибку не выдаёт никакую, но и код не выполняется
Нужно вывести значения из таблицы в один div блок, где две заметки (картинка, название, краткое описание и тд