如何從命令類獲得服務?我一直在試圖用ContainerAwareCommand
作爲我的命令類的父,然後只用$this->getContainer()->get('my_service')
,但是當我運行在CLI命令,我收到以下錯誤:從命令類獲取服務
調用未定義的方法Symfony\Component\Console\Application::getKernel()
內ContainerAwareCommand
類的getContainer()
方法。
,通過它我運行該命令的文件是:
<?php
require_once __DIR__.'/../vendor/autoload.php';
require_once __DIR__.'/AppKernel.php';
use AppBundle\Console\Command\ChangeEmailCommand;
use Symfony\Component\Console\Application;
use Symfony\Component\Console\Input\ArgvInput;
use Symfony\Component\Debug\Debug;
$input = new ArgvInput();
$env = $input->getParameterOption(array('--env', '-e'), getenv('SYMFONY_ENV') ?: 'dev');
$debug = getenv('SYMFONY_DEBUG') !== '0' && !$input->hasParameterOption(array('--no-debug', '')) && $env !== 'prod';
if ($debug) {
Debug::enable();
}
$kernel = new AppKernel($env, $debug);
$application = new Application($kernel);
$application->add(new ChangeEmailCommand());
$application->run();
您需要在您的電子郵件命令中調用setContainer。 – Cerad