getEntityManager() и getDoctrine() в Symfony2

Има ли разлика между тези две твърдения:

$this->getDoctrine()->getEntityManager()->getRepository();

$this->getDoctrine()->getRepository();

Разликата свързана ли е с някоя OOP концепция, която пропускам?


person NightOwl85    schedule 29.11.2011    source източник
comment
$this-›getDoctrine()-›getEntityManager() е отхвърлен в Symfony 2   -  person Alex Bitek    schedule 14.02.2014


Отговори (3)


Като цяло няма разлика, тъй като

$this->getDoctrine()->getRepository();

е само помощник за

$this->getDoctrine()->getEntityManager()->getRepository();

Можете да имате няколко мениджъра на обекти и тогава ще има малка разлика в получаването на хранилище от един:

$this->getDoctrine()->getRepository($entityName, $enityManagerName);
$this->getDoctrine()->getEntityManager($entityManagerName)->getRepository($entityName);

Но отново няма разлика в резултата, който ще получите.

При равни други условия бих избрал най-късия.

person Elnur Abdurrakhimov    schedule 29.11.2011

Резултатът е същият, но ако имате нужда от entityManager за нещо повече от просто получаване на хранилището, може да е удобно да го съхраните и след това да получите хранилището, както и да извършите други операции, като например промиване:

$_em = $this->getDoctrine()->getEntityManager();
$repository = $_em->getRepository();
//...
$_em->flush();

Както беше казано по-рано, ако трябва да получите само хранилището, отидете с второто изявление, което е по-кратко и лесно за четене като първото.

person Sgoettschkes    schedule 29.11.2011

Няма разлика. Ако погледнете изходния код на AbstractManagerRegistry.php. Можете да видите този код:

public function getRepository($persistentObjectName, $persistentManagerName = null)
{
    return $this->getManager($persistentManagerName)->getRepository($persistentObjectName);
}

Както можете да видите, когато извикате getRepository(), той първо извиква getManager() и след това getRepository(). Бих предложил да използвате втория, тъй като дава интелигентност в IDE като PHPStorm. Дано помогне.

person Sukhrob    schedule 21.02.2013