TGViewer
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter @phpproglib · 10.5K subscribers
Post #5891 2.4K
🚀 PHP Enums: когда стоит, а когда нет

Enums в PHP — это не просто «ещё один класс», а особый тип данных, который позволяет жёстко зафиксировать набор возможных значений. Это повышает надёжность кода и избавляет от лишних проверок вроде in_array() или громоздких switch-конструкций.

Но ✋ не спешите вставлять их повсюду:
❌ Если набор значений часто меняется или расширяется пользователями/третьими системами.
❌ Если список тривиален и не планируется расти.
❌ При рефакторинге легаси — Enums не для того, чтобы заменить всё подряд.

🔑 Где Enum действительно уместен
Фиксированные списки (статусы поста, роли пользователей, сетевые состояния).
Там, где нужна строгая типизация и меньше защитного кода.
В DDD — как часть доменной модели (например, value objects).

⚡ Бонусы:
Меньше ручных проверок и исключений.
Код становится чище, предсказуемее.
Удобнее работать с типами при сериализации, хранении в БД и локализации.

💡 Практика:
Для хранения в базе → используйте backed enum (enum UserRole: string).
Для сложной логики или локализации → лучше чистый enum с методами (label()).
Договоритесь в команде о единых правилах (например, всегда использовать метод label()).

🔗 Читать статью

Библиотека пхпшника
  • 🔥 2
More from @phpproglib
  1. Sep 25, 2026🌞 PHP умеет искать в массиве без foreach В PHP 8.4 появились array_find(), array_find_key…
  2. Sep 24, 2026👍 5 способов встроить AI в Laravel Laravel AI SDK позволяет добавлять AI-функции прямо в…
  3. Sep 23, 2026🛠 Symfony 8.2 научился автоматически генерировать JSON Schema для конфигурации приложения…
  4. Sep 23, 2026🚀 Свежий релиз Laravel 13 с набором улучшений и исправлений ✅ добавлена поддержка valkey:…
  5. Sep 21, 2026⚡️ PHP 8.6 выйдет 19 ноября 2026 года. Сейчас версия находится в beta. Самые заметные изме…
  6. Sep 20, 2026❓ Какие существуют проблемы в многопоточной среде? Основные проблемы многопоточности: 1️⃣…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →