Покращене оброблення Enum за допомогою підтримки параметрів за замовчуванням у Laravel

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 28 червня, 2025
У новій версії Laravel значно покращено обробку enum-ів запитів із підтримкою значень за замовчуванням, що спрощує їхню валідацію та логіку резервного копіювання. Чи готові ви дізнатися, як цей оновлений метод може зменшити обсяг коду та зробити ваші застосунки більш ефективними? Читайте далі!

У Laravel покращено обробку enum-запитів завдяки підтримці значень за замовчуванням, що спростило валідацію та логіку запасних варіантів у ваших додатках

Раніше обробка відсутніх чи недійсних значень enum вимагала написання додаткового коду для забезпечення запасних варіантів. Тепер оновлений метод enum приймає третій параметр для значень за замовчуванням:

$reportFormat = request()->enum('format', ReportFormat::class, ReportFormat::PDF);
 
$sortDirection = request()->enum('direction', SortDirection::class, SortDirection::Ascending);

Ця вдала зміна зменшує кількість повторюваного коду та робить обробку enum більш декларативною у логіці вашого застосунку

class ReportController extends Controller
{
    public function generateSalesReport(Request $request)
    {
        $configuration = [
            'output_format' => $request->enum('format', OutputFormat::class, OutputFormat::Excel),
            'time_range' => $request->enum('range', TimeRange::class, TimeRange::LastMonth),
            'detail_level' => $request->enum('detail', DetailLevel::class, DetailLevel::Summary),
            'export_type' => $request->enum('export', ExportType::class, ExportType::Download)
        ];
 
        return $this->buildReport($configuration);
    }
 
    public function configureNotifications(Request $request)
    {
        $settings = [
            'delivery_method' => $request->enum('method', DeliveryMethod::class, DeliveryMethod::Email),
            'priority_level' => $request->enum('priority', Priority::class, Priority::Normal),
            'frequency' => $request->enum('frequency', Frequency::class, Frequency::Weekly),
            'format_type' => $request->enum('format', NotificationFormat::class, NotificationFormat::HTML)
        ];
 
        $this->saveNotificationSettings($settings);
 
        return response()->json(['status' => 'updated', 'settings' => $settings]);
    }
 
    private function buildReport(array $config)
    {
        $reportBuilder = new SalesReportBuilder();
 
        return $reportBuilder
            ->setFormat($config['output_format'])
            ->setTimeRange($config['time_range'])
            ->setDetailLevel($config['detail_level'])
            ->setExportType($config['export_type'])
            ->generate();
    }
}

Функція параметра за замовчуванням усуває необхідність в умовній логіці, роблячи обробку запитів на основі enum більш передбачуваною та легшою для підтримки у ваших Laravel-додатках