لایهٔ اکشن
این پکیج گزینهای برای تولید یک لایه اکشن برای ماژولهای شما فراهم میکند. لایه اکشن مجموعهای از کلاسهای قابل فراخوانی است که منطق تجاری برنامه شما را در بر میگیرد.
تولید اکشنها
شما میتوانید با استفاده از پرچم --actions با دستور make:module، اکشنها را برای یک ماژول تولید کنید.
php artisan make:module Product --actions
این دستور مجموعهای از کلاسهای اکشن را در دایرکتوری app/Actions/Product تولید میکند. اکشنهای تولید شده با عملیات CRUD ماژول مطابقت دارند:
ListProductActionCreateProductActionShowProductActionUpdateProductActionDeleteProductAction
استفاده از اکشنها
کنترلر تولید شده برای ماژول به طور خودکار برای استفاده از کلاسهای اکشن جدید سیمکشی میشود. در اینجا مثالی از نحوه izgled متد store در کنترلر آمده است:
public function store(StoreProductRequest $request, CreateProductAction $createProductAction)
{
$dto = ProductDTO::fromRequest($request);
$product = $createProductAction($dto);
return ApiResponseHelper::successResponse(new ProductResource($product), 'created', 201);
}
همانطور که میبینید، کنترلر اکنون بسیار سبکتر است و منطق تجاری در کلاس CreateProductAction کپسوله شده است.
BaseAction
تمام اکشنهای تولید شده از یک کلاس BaseAction ارثبری میکنند. این کلاس چند ویژگی مفید مانند لاگگیری را فراهم میکند.
لاگگیری
کلاس BaseAction دارای یک ویژگی logger است که میتوانید از آن برای ثبت پیامها استفاده کنید. لاگر به طور خودکار برای استفاده از کانال لاگگیری که در فایل config/module-generator.php تعریف شده است، پیکربندی میشود.
در اینجا مثالی از نحوه استفاده از لاگر در یک اکشن آمده است:
class CreateProductAction extends BaseAction
{
// ...
protected function handle(mixed ...$payload): mixed
{
$this->logger->info('Creating a new product...');
return $this->service->store(...$payload);
}
}