سلام و عرض ادب
آیا اینکه ما بیایم واسه هر سرویسی که میخوایم استفاده کنیم، یک interfaceبسازیم و اون اینترفیس رو داخل کنترلرمون injectکنیم کار درستیه؟
به طور مثال به جای:
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());
}
}
به این صورت پیاده سازی کنیم:
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 کنیم.