Symfony2 Doctrine2のEventManagerをコンテナから取得します

コンテナに登録されているサービスの抜粋は以下です。

$ php app/console container:debug | egrep '(^doctrine\s|^doctrine.+entity_manager)'
doctrine                               container Doctrine\Bundle\DoctrineBundle\Registry
doctrine.orm.default_entity_manager    container Doctrine\ORM\EntityManager
doctrine.orm.entity_manager            n/a       alias for doctrine.orm.default_entity_manager

簡易コードで試してみます。

use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;

class TestDoctrineEntityManagerCommand extends ContainerAwareCommand
{

    protected function configure()
    {
        $this->setName('sample:entity-manager');
    }

    protected function execute(InputInterface $input, OutputInterface $output)
    {
        $em = $this->getContainer()->get('doctrine')->getManager();
        var_dump($em);

        $em = $this->getContainer()->get('doctrine.orm.default_entity_manager');
        var_dump($em);

        // alias for doctrine.orm.default_entity_manager
        $em = $this->getContainer()->get('doctrine.orm.entity_manager');
        var_dump($em);
    }
}
$ php app/console sample:entity-manager | grep 'class Doctrine\\ORM\\EntityManager'
class Doctrine\ORM\EntityManager#337 (11) {
class Doctrine\ORM\EntityManager#337 (11) {
class Doctrine\ORM\EntityManager#337 (11) {