symfony控制台命令中的依赖注入?不完整的Symfony应用程序

时间:2014-02-21 02:17:24

标签: php symfony console

我已经看到了这个How can i inject dependencies to Symfony Console commands?,但这个答案并没有真正提供足够的信息,并且已在此处进行了解释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文件显示在容器中注册类的文档。但我没有app目录,因为这不是一个完整的symfony应用程序。除了上面的文件之外的所有应用程序所在的基本目录是src / lib。如果我能弄清楚上面的第一部分,symfony能否在src / lib / config / config.php找到配置文件?

1 个答案:

答案 0 :(得分:0)

您可以使用Consolefull申请。

Consolefull是一个使用Symfony控制台组件和Symfony依赖注入组件的简单库