Веб Мастерская | Веб разработка и программирование | ИТ | IT
Без категории · 22 сентября 2026 г.
PHP:
PHP: Enums в PHP: хватит хранить статусы в строках и константах Коллеги, признавайтесь, сколько раз статус заказа жил в базе как 'paid', 'PAID', 'paid ' или 1? 🙂 Раньше часто делали так: const STATUS_PAID = 'paid'; А потом ловили баг из-за пробела, регистра или опечатки. С PHP 8.1 лучше использовать enum: enum OrderStatus: string { case New = 'new'; case Paid = 'paid'; case Shipped = 'shipped'; case Canceled = 'canceled'; } Теперь статус нельзя «придумать»: код принимает только конкретные кейсы. Enum бывает backed: строковым или целочисленным. Для статусов я чаще беру строки: в базе и логах сразу видно значение. Получить сырое значение просто: $status->value. Плюсы в продакшене: - IDE подсказывает варианты. - Меньше ошибок с неверным значением. - Логика статусов собрана в одном месте. - Можно добавить методы: label(), color(), canCancel(). - match помогает не забыть обработать отдельный статус. Пример из практики: $status = OrderStatus::from($request->status); if ($status === OrderStatus::Paid) { // отправляем заказ } Для входных данных используйте from() или tryFrom(): первый бросит исключение на мусор, второй вернёт null. Для API я обычно выбираю валидацию и понятную ошибку, а не тихий провал. Совет из мастерской: не делайте один «универсальный» enum на весь проект. Статусы заказа, оплаты и доставки — разные домены. А в легаси переводите постепенно: фабрика, валидация старых строк, затем строгий тип. А у вас в проекте статусы уже в enum или ещё «магические строки»? #PHP #Enums #PHP8 #WebDev #Backend #PHPDev #CleanCode #Рефакторинг #ВебРазработка #Код #Программирование #Разработка #Практика #ВебМастерская Вот так. Идем кодить дальше! 🚀