Symfony2中ObjectManager与EntityManager的区别?

在自定义表单types中使用Doctrine\Common\Persistence\ObjectManagerDoctrine\ORM\EntityManager什么区别?

我可以使用$this->em->getRepository()$this->om->getRepository()来获取respository。

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

ObjectManager是一个接口, EntityManager是它的ORM实现。 这不是唯一的实施; 例如,来自MongoDB ODM的DocumentManager可以实现它。 ObjectManager仅提供其所有实现的通用子集。

如果你想让你的表单types与任何ObjectManager实现一起工作,那就使用它。 这样你可以从ORM切换到ODM,你的types仍然可以工作。 但是,如果您需要特定的东西,只有EntityManager提供并且不打算切换到ODM,请使用它。