Разница между ObjectManager и EntityManager в Symfony2?
в чем разница между DoctrineCommonPersistenceObjectManager
и DoctrineORMEntityManager
при использовании его в пользовательском типе формы?
Я могу получить respository, используя как $this->em->getRepository()
и $this->om->getRepository()
.
class MyFormType extends SymfonyComponentFormAbstractType
{
/**
* @var DoctrineORMEntityManager
*/
protected $em;
public function __construct(DoctrineORMEntityManager $em)
{
$this->em = $em;
}
}
вместо:
class MyFormType extends SymfonyComponentFormAbstractType
{
/**
* @var DoctrineCommonPersistenceObjectManager
*/
protected $om;
public function __construct(DoctrineCommonPersistenceObjectManager $om)
{
$this->om = $om;
}
}
1 ответов
ObjectManager
является интерфейсом и EntityManager
является его реализацией ORM. Это не единственная реализация; например, DocumentManager
из MongoDB ODM реализует его также. ObjectManager
обеспечивает только общее подмножество всех его реализаций.
если вы хотите, чтобы ваш тип формы работал с любым ObjectManager
реализация, затем используйте его. Таким образом, вы можете переключиться с ORM на ODM, и ваш тип будет работать одинаково. Но если вам нужно что-то конкретное, что только EntityManager
предоставляет и не планируя переключиться на ODM, используйте его вместо этого.