Quelle est la différence entre Docsortingne\Common\Persistence\ObjectManager
et Docsortingne\ORM\EntityManager
lorsque vous l’utilisez dans un type de formulaire personnalisé?
Je peux obtenir le référentiel en utilisant $this->em->getRepository()
et $this->om->getRepository()
.
class MyFormType extends \Symfony\Component\Form\AbstractType { /** * @var Docsortingne\ORM\EntityManager */ protected $em; public function __construct(Docsortingne\ORM\EntityManager $em) { $this->em = $em; } }
Au lieu de:
class MyFormType extends \Symfony\Component\Form\AbstractType { /** * @var Docsortingne\Common\Persistence\ObjectManager */ protected $om; public function __construct(Docsortingne\Common\Persistence\ObjectManager $om) { $this->om = $om; } }
ObjectManager
est une interface et EntityManager
est son implémentation ORM. Ce n’est pas la seule implémentation; Par exemple, DocumentManager
de MongoDB ODM l’implémente également. ObjectManager
fournit uniquement le sous-ensemble commun de toutes ses implémentations.
Si vous souhaitez que votre type de formulaire fonctionne avec toute implémentation ObjectManager
, utilisez-le. De cette façon, vous pouvez passer d’ORM à ODM et votre type fonctionnera toujours de la même façon. Mais si vous avez besoin de quelque chose de spécifique que seul EntityManager
fournit et ne prévoit pas de passer à ODM, utilisez-le à la place.