[英]Dependency injection in a symfony console command? Not full Symfony application
我已经看到了如何将依赖项注入到Symfony Console命令中? 但是该答案并未真正提供足够的信息,并且已经在此处进行了说明http://symfony.com/doc/current/cookbook/console/console_command.html
问题是containerAwareCommand不适用于此处的设置http://symfony.com/doc/current/components/console/introduction.html
为了使用我能说的来使用containerAwareCommand,我需要我的应用程序使用Symfony\\Bundle\\FrameworkBundle\\Console\\Application
代替
Symfony\\Component\\Console\\Application
但是使用frameworkBundle Application类需要KernelInterface的实例,并且不允许我将名称和版本传递给我的应用程序。
这是我无法使用containerAwareCommands的东西
#!/usr/bin/env php
<?php
require __DIR__.'/../src/vendor/autoload.php';
$app = new Symfony\Component\Console\Application('spud', '0.0.1');
$app->add(new Isimmons\Spudster\Console\Commands\SayHelloCommand);
$app->run();
它是自运行的命令,但是尝试使用getContainer时出现错误
Call to undefined method Symfony\Component\Console\Application::getKernel()
关于下一个可能涉及的相关主题,在容器中注册类的文档显示了使用app / config / config.php文件。 但是我没有应用程序目录,因为这不是完整的symfony应用程序。 除上述文件外,所有应用程序所在的基本目录是src / lib。 如果我能弄清楚上面的第一部分,symfony能够在src / lib / config / config.php中找到配置文件吗?
您可以使用Consolefull应用程序。
Consolefull是一个简单的库,可与Symfony控制台组件和Symfony依赖注入组件一起使用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.