مسؤولية واحدة مع الإجراءات:
إنشاء فئة الإجراء
class CreateOrderAction
{
public function execute(array $data): Order
{
return DB::transaction(function () use ($data) {
$order = Order::create($data);
$order->items()->createMany($data['items']);
event(new OrderCreated($order));
return $order;
});
}
}الاستخدام في المتحكم
public function store(Request $request, CreateOrderAction $action)
{
$order = $action->execute($request->validated());
return redirect()->route('orders.show', $order);
}الفوائد
- قابل لإعادة الاستخدام عبر المتحكمات
- سهل الاختبار
- مسؤولية واضحة
- متحكمات أبسط