即使在容器中注册了服务也无法调试服务

时间:2015-08-24 16:03:39

标签: php symfony

我使用以下内容来了解​​服务及其定义:

<?php
namespace Members\Bundle\ManagementBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\DependencyInjection\Definition;
use Symfony\Component\DependencyInjection;
use Symfony\Component\DependencyInjection\ContainerBuilder;

class IndexController extends Controller
{
    public function learnAction()
    {
        $container= new ContainerBuilder();
        $container->register('test_service','User');
        var_dump($container->hasDefinition('test_service')); // return true
        return new Response("hi");
    }

}

服务test_service已注册,var_dump回显true。但是当我回到控制台并尝试使用调试时:

php app/console container:debug test_service
  

[Symfony的\元器件\ DependencyInjection \异常\ InvalidArgumentException]   服务定义&#34; test_service&#34;不存在。

     

container:debug [--show-private] [--tag =&#34; ...&#34;] [--tags]   [--parameter =&#34; ...&#34;] [--p arameters] [name]

我不理解的是什么?非常感谢您的平常帮助。

1 个答案:

答案 0 :(得分:1)

您应该在构建容器时在Symfony加载的其中一个配置文件中定义您的服务。

在您的示例中,您手动实例化容器构建器,但这不是Symfony在定义容器时使用的构建器。

如果您在例如app / config / services.yml中定义服务,它将可用于控制台命令。