@procode
Разработчик

Есть ли принципальное отличие между инъекцией Repository в функцию, и получением его же через entityManager(см. код)?

Данные можно получить так:

public function list(ItemRepository $itemRepository)
    {
        $items = $itemRepository->findAll();


или так

public function list()
    {
        $entityManager = $this->getDoctrine()->getManager();
       $items = $entityManager->getRepository(Item::class)->findAll();


Есть ли какое-то принципиальное отличие между этими двумя подходами?

В чем именно преимущество DI (первого варианта) в данной ситуации? И есть ли оно вообще?

Спасибо.
  • Вопрос задан
  • 135 просмотров
Решения вопроса 1
@sl0
Если нужно просто получить некоторые данные из репозитория, то первый вариант лучше.
А вот если надо полученные данные как-то изменять, то лучше второй вариант, т.к. сразу можно дернуть persist и flush из em.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@quiex
Попробуйте написать тесты для этого класса/метода и поймете, в чем разница.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы