Как реализовать перечисления в PHP?

Вопрос

Насколько мне известно, в PHP нет встроенной поддержки перечислений. (Это такой тип данных, который представляет собой набор из именованных целочисленных констант).
Но я пришёл в PHP из Java, и привык использовать перечисления в своих проектах. Особенно очень удобно использовать их в какой-нибудь IDE, в которой есть средство автозавершения кода.

В принципе, константы подходят для этой роли, но с их использованием появляется проблема именного пространства, потому что они глобальные. У массивов нет этой проблемы, но поскольку их значения могут быть переопределены в любой момент, то IDE не подхватывает их и не делает подсказок для ключей этих массивов.

Есть ли какое-нибудь решение, которое Вы обычно используете? Или это никому не нужно? :)

Ответ №1

Обычно, в подобных ситуациях я делаю так:

class DaysOfWeek
{
const Sunday = 0;
const Monday = 1;
// etc.
}
var $today = DaysOfWeek::Sunday;

Также класс DaysOfWeek можно сделать абстрактным (добавив перед его описанием слово abstract), тогда этот класс нельзя будет унаследовать.

No responses yet

Добавить комментарий