Лучше не внедрять сам контейнер, а внедрять сервисы из контейнера в ваш объект. Если вы используете контейнер Symfony2, вы можете сделать что-то вроде этого:
MyBundle / Resources / config / services (или где вы решите поместить этот файл):
...
<services>
<service id="mybundle.command.somecommand" class="MyBundle\Command\SomeCommand">
<call method="setSomeService">
<argument type="service" id="some_service_id" />
</call>
</service>
</services>
...
Тогда ваш командный класс должен выглядеть так:
<?php
namespace MyBundle\Command;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
use The\Class\Of\The\Service\I\Wanted\Injected;
class SomeCommand extends Command
{
protected $someService;
public function setSomeService(Injected $someService)
{
$this->someService = $someService;
}
...
Я знаю, что вы сказали, что не используете контейнер для внедрения зависимостей, но для реализации вышеуказанного ответа от @ramon, вы должны использовать его. По крайней мере, так ваша команда может быть должным образом проверена модулем.