orbitroom
@orbitroom
Fullstack, laravel, php, js, css. Стаж 10 лет

Как правильно изменить реализацию шаблона репозиторий подгружаемого с помощью интерфейсов для инициализации модели?

Доброго времени суток.

Был создан магазин на основе https://github.com/Laracommerce/laracom на ларавел.
В процессе работы было замечено что наряду с подтягиванием реализации под интерфейс вызовом типа:
use App\Shop\Products\Repositories\Interfaces\ProductRepositoryInterface;

связывание которых объявлено в RepositoryServiceProvider (app\Providers\RepositoryServiceProvider.php),

$this->app->bind(
            ProductRepositoryInterface::class,
            ProductRepository::class
        );

используются прямые вызовы типа
use App\Shop\Products\Repositories\ProductRepository;

(например здесь app/Shop/Orders/Repositories/OrderRepository.php)

В коде можно найти несколько подобных примеров и чаще всего прямое указание адреса необходимо для вызова конструкции new Repository(ОбъектМодели). Например
public function buildOrderDetails(Collection $items)
    {
        $items->each(function ($item) {
            $productRepo = new ProductRepository(new Product);
            $product = $productRepo->find($item->id);
            if ($item->options->has('product_attribute_id')) {
                $this->associateProduct($product, $item->qty, [
                    'product_attribute_id' => $item->options->product_attribute_id
                ]);
            } else {
                $this->associateProduct($product, $item->qty);
            }
        });
    }


Не нашел однозначного выхода из данной ситуации, прошу совета тех кто сталкивался с примером качественной реализации паттерна Репозиторий на laravel.
  • Вопрос задан
  • 128 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
РосТендер Москва
от 130 000 до 150 000 ₽
Amigoweb Магнитогорск
от 40 000 до 70 000 ₽
ЧИТАЙ-ГОРОД Москва
от 140 000 до 210 000 ₽
17 февр. 2020, в 00:30
1500 руб./за проект
16 февр. 2020, в 22:28
2000 руб./за проект