سلام و عرض ادب
آیا اینکه ما بیایم واسه هر سرویسی که میخوایم استفاده کنیم، یک interfaceبسازیم و اون اینترفیس رو داخل کنترلرمون injectکنیم کار درستیه؟
به طور مثال به جای:
<?php namespace App\\Http\\Controllers\\Api\\V1\\Application; use App\\Http\\Controllers\\Api\\V1\\ApiBaseController; use App\\Http\\Requests\\Api\\V1\\Application\\Address\\StoreRequest; use App\\Services\\AddressService; class AddressController extends ApiBaseController { public function __construct(private AddressService $addressService) { } public function store(StoreRequest $request) { $this->addressService->create($request->user(), $request->validated()); } }
به این صورت پیاده سازی کنیم:
<?php namespace App\\Http\\Controllers\\Api\\V1\\Application; use App\\Http\\Controllers\\Api\\V1\\ApiBaseController; use App\\Http\\Requests\\Api\\V1\\Application\\Address\\StoreRequest; use App\\Services\\AddressServiceInterface; class AddressController extends ApiBaseController { public function __construct(private AddressServiceInterface $addressService) { } public function store(StoreRequest $request) { $this->addressService->create($request->user(), $request->validated()); } }
و در نهایت هم توی provider بیایم AddressService رو به AddressServiceInterfaceبه اصطلاح bind کنیم.