У нас есть два типа хранилищ в нашем приложении:Laravel IoC переплеты с несколькими вариантами использования
App\Repositories\Database\PostRepository
App\Repositories\ElasticSearch\PostRepository
Они оба реализуют один и тот же контракт PostRepositoryInterface
.
Мой вопрос:
В основном мы будем использовать Database\PostRepository
, чтобы получить наши сущности, хотя мы хотим использовать ElasticSearch\PostRepository
в некоторых случаях:
- Когда мы вернемся большие коллекции
- При поиске по полнотекстовым запросам
Как мы можем обойти наша привязка к сервису по умолчанию: PostRepositoryInterface >> Database\PostRepository
, в случаях, когда мы хотим использовать наши репозитории ElasticSearch?
У меня есть чувство, зависящее непосредственно от нашего бетона. Реализация не является отличной идеей.
проверить поставщиков и документацию IoC на laravel. Вы можете переключать привязку во время выполнения. – anwerj
Конечно, хотя это не столько переключение во время выполнения. Скорее, он всегда вызывается в этом месте – AndrewMcLagan
Например, мы ВСЕГДА хотим использовать его в некоторых КОНТРОЛЛЕРАХ и других классах – AndrewMcLagan