У 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-додатках