在 Symfony 控制器中使用 container:debug 结果

Use container:debug results in Symfony controller

当您 运行 app/console container:debug 时,您将获得所有已定义服务的列表。我想在我的控制器(扩展 Symfony 控制器)中使用此列表(仅定义),我想使用该列表 运行 看看我是否可以识别服务。

另一种选择是 $this->get('example.start*') 之类的明星加载服务或类似的东西,有人做过吗?我错过了一些文档吗?

谢谢!!祝大家有个好心情!

希望对你有用...

查看http://api.symfony.com/2.5/Symfony/Component/DependencyInjection/ContainerBuilder.html更多数据...

use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\Config\FileLocator;                      

class   SomeController
{
    public  function   containerDebuglAction()
    {
        print_r( array_keys( $this->getContainerBuilder()->getDefinitions() ) );
    }


    /** 
     * Loads the ContainerBuilder from the cache.                                                                                               
     *      
     * @return ContainerBuilder                                                                                                                 
     *                                                                                                                                          
     * @throws \LogicException
     */ 
    protected function getContainerBuilder()
    {   
        if (!is_file($cachedFile = $this->get('service_container')->getParameter('debug.container.dump'))) {                                    
            throw new \LogicException(sprintf('Debug information about the container could not be found. Please clear the cache and try again.')
        }                                                                                                                                       

        $container = new ContainerBuilder();                                                                                                    

        $loader = new XmlFileLoader($container, new FileLocator());                                                                             
        $loader->load($cachedFile);

        return $container;                                                                                                                      
    }       
}