Différence entre ObjectManager et EntityManager dans Symfony2?
Quelle est la différence entre DoctrineCommonPersistenceObjectManager
et DoctrineORMEntityManager
lors de son utilisation dans un type de formulaire personnalisé?
Je peux obtenir le référentiel en utilisant à la fois $this->em->getRepository()
et $this->om->getRepository()
.
class MyFormType extends SymfonyComponentFormAbstractType
{
/**
* @var DoctrineORMEntityManager
*/
protected $em;
public function __construct(DoctrineORMEntityManager $em)
{
$this->em = $em;
}
}
Au lieu de:
class MyFormType extends SymfonyComponentFormAbstractType
{
/**
* @var DoctrineCommonPersistenceObjectManager
*/
protected $om;
public function __construct(DoctrineCommonPersistenceObjectManager $om)
{
$this->om = $om;
}
}
1 réponses
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 voulez que votre type de formulaire fonctionne avec une implémentation ObjectManager
, utilisez-le. De cette façon, vous pouvez passer D'ORM à ODM et votre type fonctionnerait toujours de la même manière. Mais si vous avez besoin de quelque chose de spécifique que seul EntityManager
fournit et que vous ne prévoyez pas de passer à ODM, l'utiliser à la place.