カスタムフォームタイプで使用する場合の_Doctrine\Common\Persistence\ObjectManager
_と_Doctrine\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;
}
}
_
ObjectManager
はインターフェースであり、EntityManager
はそのORM実装です。唯一の実装ではありません。たとえば、MongoDB ODMのDocumentManager
も同様に実装します。 ObjectManager
は、そのすべての実装の共通サブセットのみを提供します。
フォームタイプをObjectManager
実装で動作させる場合は、それを使用します。この方法で、ORMからODMに切り替えても、タイプは同じように機能します。ただし、EntityManager
のみが提供する特定の何かが必要で、ODMに切り替える予定がない場合は、代わりにそれを使用してください。