Есть ли разница между этими двумя утверждениями:
$this->getDoctrine()->getEntityManager()->getRepository();
$this->getDoctrine()->getRepository();
Относится ли разница к какой-либо концепции ООП, которую я упускаю?
Есть ли разница между этими двумя утверждениями:
$this->getDoctrine()->getEntityManager()->getRepository();
$this->getDoctrine()->getRepository();
Относится ли разница к какой-либо концепции ООП, которую я упускаю?
В общем, без разницы, т.к.
$this->getDoctrine()->getRepository();
просто помощник для
$this->getDoctrine()->getEntityManager()->getRepository();
У вас может быть несколько менеджеров сущностей, и тогда будет небольшая разница в получении репозитория из одного:
$this->getDoctrine()->getRepository($entityName, $enityManagerName);
$this->getDoctrine()->getEntityManager($entityManagerName)->getRepository($entityName);
Но опять же, никакой разницы в результате вы получите.
При прочих равных я бы выбрал самый короткий.
Результат тот же, но если вам нужен entityManager не только для получения репозитория, может быть удобно сохранить его, а затем получить репозиторий, а также выполнить другие операции, такие как сброс:
$_em = $this->getDoctrine()->getEntityManager();
$repository = $_em->getRepository();
//...
$_em->flush();
Как было сказано ранее, если вам нужно получить только репозиторий, воспользуйтесь вторым оператором, который короче и так же легко читается, как и первый.
Нет никакой разницы. Если вы посмотрите на исходный код AbstractManagerRegistry.php. Вы можете увидеть этот код:
public function getRepository($persistentObjectName, $persistentManagerName = null)
{
return $this->getManager($persistentManagerName)->getRepository($persistentObjectName);
}
Как видите, когда вы вызываете getRepository(), она сначала вызывает getManager(), а затем getRepository(). Я бы предложил использовать второй, так как он дает интеллект в таких средах разработки, как PHPStorm. Надеюсь, поможет.