سلام و عرض ادب
استاد در مورد اینکه میتونیم addEncoderFactory رو توی ServiceProviderهای لاراول صدا بزنیم توی این سوال توضیح دادن، میشه لطفا با کد یه مثال بزنید که چجوری مثلا توی AppServiceProvider لاراول این متد رو کال کنیم و encoder هامون رو بهش پاس بدیم؟
من provider جدید ساختم به این صورت:
<?php namespace App\\Providers; use Illuminate\\Support\\ServiceProvider; use Src\\Solid\\Ocp\\EncoderFactory; use Src\\Solid\\Ocp\\EncoderFactoryInterface; class EncoderServiceProvider extends ServiceProvider { public $bindings = [ EncoderFactoryInterface::class => EncoderFactory::class, ]; /** * Register services. */ public function register(): void { // } /** * Bootstrap services. */ public function boot(EncoderFactory $encoderFactory): void { $encoderFactory->addEncoderFactory('json',/*???*/); } }
همونطوری که میبینید اینجا EncoderFactory به EncoderFactoryInterface به اصطلاح bind شده که البته اینم واسم سواله که توی کیس ما به این صورت bind کردن درسته یا نه؟ منظورم اینه که اگر فردا روزی خواستیم از یه factory دیگه استفاده کنیم، باید بیایم توی این provider و به جای EncoderFactory از factory دیگه ای که مد نظرمونه استفاده کنیم؟
و سوال دیگهم هم اینه که اینجا ما الان به عنوان پارامتر دوم متد addEncoderFactoryچی باید پاس بدیم؟