然而,这会立即导致失败:
致命错误:调用未定义的方法appDevDebugProjectContainer :: getDefinition()
我无法在有关此行为的文档中找到更多信息,还有什么想法?
编辑:代码示例:
class MyCommand extends ContainerAwareCommand {
protected function execute(InputInterface $p_vInput, OutputInterface $p_vOutput) {
try {
var_dump($this->getContainer()->getDefinition('api.driver'));
} catch (\Exception $e) {
print_r($e);
exit;
}
}
}
答案 0 :(得分:3)
例如,您提供的$container
不是Container
类的实例,而是ContainerBuilder
类的实例。 Container没有任何名为getDefinition()
的方法。
如果您没有显示您想要使用该定义的上下文,我不能说更多。
修改强>
下面我发布了使用ContainerBuilder
的代码示例。它直接从symfony的命令中复制,所以我想这是一个很好的使用示例。
// Symfony/Bundle/FrameworkBundle/Command/ContainerDebugCommand.php
/**
* Loads the ContainerBuilder from the cache.
*
* @return ContainerBuilder
*/
private function getContainerBuilder()
{
if (!$this->getApplication()->getKernel()->isDebug()) {
throw new \LogicException(sprintf('Debug information about the container is only available in debug mode.'));
}
if (!file_exists($cachedFile = $this->getContainer()->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;
}
最佳!