2012-04-23 33 views
51

Özel form türünde kullanıldığında Doctrine\Common\Persistence\ObjectManager ve Doctrine\ORM\EntityManager arasındaki fark nedir?arasındaki fark?

Hem depolamayı hem $this->em->getRepository() hem de $this->om->getRepository() kullanarak alabilirim. Yerine

class MyFormType extends \Symfony\Component\Form\AbstractType 
{ 

    /** 
    * @var Doctrine\ORM\EntityManager 
    */ 
    protected $em; 

    public function __construct(Doctrine\ORM\EntityManager $em) 
    { 
     $this->em = $em; 
    } 

} 

:

class MyFormType extends \Symfony\Component\Form\AbstractType 
{ 

    /** 
    * @var Doctrine\Common\Persistence\ObjectManager 
    */ 
    protected $om; 

    public function __construct(Doctrine\Common\Persistence\ObjectManager $om) 
    { 
     $this->om = $om; 
    } 

} 

cevap

87

ObjectManager bir arayüz ve EntityManager onun ORM uygulamasıdır. Tek uygulama değil; örneğin MongoDB ODM'den DocumentManager da bunu uygular. ObjectManager, yalnızca tüm uygulamalarının ortak alt kümesini sunar.

Form türünüzün herhangi bir ObjectManager uygulamasıyla çalışmasını istiyorsanız, kullanın. Bu şekilde ORM'den ODM'ye geçiş yapabilirsiniz ve türünüz yine de aynı şekilde çalışır. Ancak, yalnızca EntityManager'un belirli bir şeye ihtiyacınız varsa ve ODM'ye geçmeyi planlamıyorsanız, bunun yerine kullanın.

+0

Vay, teşekkürler! ObjectManager için gidiyorum. – gremo

+0

EntityManager'ın kullanımının artık kullanımdan kaldırıldığını veya en azından bağımlılık enjeksiyonunda kullanıldığını düşünüyorum. Ama yine de EntityManagerInterface doğruysa ve Objectmanager ile EntityManagerInterface arasındaki farkı bilmiyorum. –