Chris@17: register('Symfony\Component\Console\Input\InputInterface', $this); Chris@17: $this->register('Symfony\Component\Console\Output\OutputInterface', $this); Chris@17: } Chris@17: Chris@17: public function register($interfaceName, ParameterInjector $injector) Chris@17: { Chris@17: $this->injectors[$interfaceName] = $injector; Chris@17: } Chris@17: Chris@17: public function args($commandData) Chris@17: { Chris@17: return array_merge( Chris@17: $commandData->injectedInstances(), Chris@17: $commandData->getArgsAndOptions() Chris@17: ); Chris@17: } Chris@17: Chris@17: public function injectIntoCommandData($commandData, $injectedClasses) Chris@17: { Chris@17: foreach ($injectedClasses as $injectedClass) { Chris@17: $injectedInstance = $this->getInstanceToInject($commandData, $injectedClass); Chris@17: $commandData->injectInstance($injectedInstance); Chris@17: } Chris@17: } Chris@17: Chris@17: protected function getInstanceToInject(CommandData $commandData, $interfaceName) Chris@17: { Chris@17: if (!isset($this->injectors[$interfaceName])) { Chris@17: return null; Chris@17: } Chris@17: Chris@17: return $this->injectors[$interfaceName]->get($commandData, $interfaceName); Chris@17: } Chris@17: Chris@17: public function get(CommandData $commandData, $interfaceName) Chris@17: { Chris@17: switch ($interfaceName) { Chris@17: case 'Symfony\Component\Console\Input\InputInterface': Chris@17: return $commandData->input(); Chris@17: case 'Symfony\Component\Console\Output\OutputInterface': Chris@17: return $commandData->output(); Chris@17: } Chris@17: Chris@17: return null; Chris@17: } Chris@17: }