Symfony2中ObjectManager与EntityManager的区别?
在自定义表单types中使用Doctrine\Common\Persistence\ObjectManager
和Doctrine\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,请使用它。