的ObjectManager和EntityManager的在Symfony2的区别?(Differe

2019-06-23 21:38发布

什么之间的差别Doctrine\Common\Persistence\ObjectManagerDoctrine\ORM\EntityManager自定义窗体类型使用的时候吗?

我可以用得到的程序存储库都$this->em->getRepository()$this->om->getRepository()

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

 }

Answer 1:

ObjectManager是一个接口和EntityManager是它的ORM实现。 这不是唯一的执行情况; 例如, DocumentManager从MongoDB的ODM实现它。 ObjectManager仅提供其所有实现共同的子集。

如果你希望你的表单类型与任何工作ObjectManager实现,然后使用它。 这样,您就可以从ORM切换到ODM和你的类型,仍能正常工作一样。 但是如果你需要特定的,只有事情EntityManager提供,并且不打算切换到ODM,用它来代替。



文章来源: Difference between ObjectManager and EntityManager in Symfony2?