我使用以下内容来了解服务及其定义:
<?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]
我不理解的是什么?非常感谢您的平常帮助。
答案 0 :(得分:1)
您应该在构建容器时在Symfony加载的其中一个配置文件中定义您的服务。
在您的示例中,您手动实例化容器构建器,但这不是Symfony在定义容器时使用的构建器。
如果您在例如app / config / services.yml中定义服务,它将可用于控制台命令。