Теперь 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