如何将服务注入到使用其他服务的命令中?

时间:2015-05-13 23:07:41

标签: php symfony

我是symfony2的新手。

我有一个名为CURLController的服务控制器, 另一个我调用myController的控制器使用curl控制器作为服务来创建curl请求。 我使用$this->getContainer()->get('cont.my')来调用它。

现在我想添加一个symfony命令,从命令行获取一些变量并将其传递给myController,所以我也将myController写为服务(cont.my),然后我使用{{1命令从命令中调用它}}

它从命令开始工作,我确实进入myController函数,但问题是它内部的服务不再起作用。

我做错了什么?

我收到的错误是:

$this->container->get('cont.my')

service.yml:

PHP Fatal error:  Call to a member function get() on a non-object

myCommand:

services:
utils.curl:
    class: project\CommonBundle\Controller\UtilsCurlController
cont.my:
        class: project\ServerBundle\Controller\MyController

}

myController的:

class myCommand extends ContainerAwareCommand{
protected function configure(){
    $this->setName('mycommand:execute')
         ->setDescription('create a pull request');
}

/**
 * {@inheritdoc}
 */
protected function execute(InputInterface $input, OutputInterface $output){

    $serverResponse = $this->getContainer()->get('cont.my');
    $output->writeln(sprintf('<comment>'.$serverResponse->printHello().'</comment>'));
}

}

编辑:

如果通过添加:

来修复它
class MyController extends Controller{

public function printHello(){
    $serverResponse = $this->container->get('utils.curl')
        ->setUrl('example.com')
        ->createCurl();
    return $serverResponse;
}

到services.yml。 但是为什么它做了我不明白的技巧。

0 个答案:

没有答案