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;
    }

 }
56
demandé sur vaxquis 2012-04-23 22:01:52

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.

93
répondu Elnur Abdurrakhimov 2012-04-23 18:32:54