Добрый вечер, подскажите как связать сервис с интерфейсом, и несколькими реализациями.
Например:
class SpiderService
{
/**
* SpiderService constructor.
* @param AuctionRepositoryInterface $auctionRepository
*/
public function __construct(AuctionRepositoryInterface $auctionRepository)
{
$this->auctionRepository = $auctionRepository;
}
}
interface AuctionRepositoryInterface
{
public function getActualDateAuctions();
}
class AuctionRepository implements AuctionRepositoryInterface
{
public function getActualDateAuctions()
{
//реализация
}
}
class InMemoryAuctionRepository implements AuctionRepositoryInterface
{
public function getActualDateAuctions()
{
//какая то реализация
}
}
class SpiderServiceProvider extends ServiceProvider
{
public function register()
{
$this->app->singleton('spider', 'App\Services\SpiderService');
}
}
И как вызвать сервис с разной реализацией?
$service = app()->make(SpiderService::class); // ???????