TGViewer
Заметки разработчика Заметки разработчика @dev_notes_ru · 458 subscribers
Post #1588 285
Laravel Enum: Чистый, структурированный и удобный для разработчиков

Теперь Laravel поддерживает нативные классы Enum со встроенными функциями кастинга, меток и генерации через Artisan. Это отличный способ избавиться от "магических" строк и чисел в моделях и формах.

🔧 Создание Enum через Artisan:

php artisan make:enum UserRole


📁 Создастся файл: app/Enums/UserRole.php

📦 Пример класса Enum:

namespace App\Enums;

enum UserRole: string
{
case Admin = 'admin';
case Manager = 'manager';
case Customer = 'customer';

public function label(): string
{
return match($this) {
self::Admin => 'Администратор',
self::Manager => 'Менеджер',
self::Customer => 'Клиент',
};
}

public static function options(): array
{
return array_map(
fn($role) => ['value' => $role->value, 'label' => $role->label()],
self::cases()
);
}
}


✅ Как использовать:

📌 Приведение типов в модели:

protected $casts = [
'role' => UserRole::class,
];


📌 Работа с Enum:

$user->role = UserRole::Admin;
echo $user->role->label(); // "Администратор"


📌 Генерация <select> (Blade или Livewire):

<select name="role">
@foreach (App\Enums\UserRole::options() as $option)
<option value="{{ $option['value'] }}">{{ $option['label'] }}</option>
@endforeach
</select>


📌 Валидация ввода:

'role' => ['required', new Enum(UserRole::class)],


📌 Laravel Enums делают код чище, улучшают его читаемость и уменьшают количество ошибок, связанных с недопустимыми значениями. Используйте make:enum, для быстрого создания, и расширяйте функциональность по мере необходимости.

📱 @dev_notes_ru

#Laravel
  • 👍 3
  • 🤣 1
More from @dev_notes_ru
  1. Apr 27, 2026Уникальный индекс при мягком удалении: решаем проблему дубликатов При использовании мягког…
  2. Apr 23, 2026Статические переменные в PHP: использование static внутри функций По данным исследования E…
  3. Apr 21, 2026Валидация массивов в Laravel без N+1: Form Request как построитель контекста Применение пр…
  4. Apr 13, 2026JSON в браузере: import или fetch — руководство по выбору Спойлер: import из JSON — это не…
  5. Apr 6, 2026Проксирование fetch() в серверном JavaScript Стандарт Fetch не специфицирует проксирование…
  6. Apr 2, 2026Taskfile: Когда пора отказаться от Makefile (а когда — нет) Makefile — инструмент с почти…
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 →