Chris@14: Chris@14: */ Chris@14: class ContainerCommandLoader implements CommandLoaderInterface Chris@14: { Chris@14: private $container; Chris@14: private $commandMap; Chris@14: Chris@14: /** Chris@14: * @param ContainerInterface $container A container from which to load command services Chris@14: * @param array $commandMap An array with command names as keys and service ids as values Chris@14: */ Chris@14: public function __construct(ContainerInterface $container, array $commandMap) Chris@14: { Chris@14: $this->container = $container; Chris@14: $this->commandMap = $commandMap; Chris@14: } Chris@14: Chris@14: /** Chris@14: * {@inheritdoc} Chris@14: */ Chris@14: public function get($name) Chris@14: { Chris@14: if (!$this->has($name)) { Chris@14: throw new CommandNotFoundException(sprintf('Command "%s" does not exist.', $name)); Chris@14: } Chris@14: Chris@14: return $this->container->get($this->commandMap[$name]); Chris@14: } Chris@14: Chris@14: /** Chris@14: * {@inheritdoc} Chris@14: */ Chris@14: public function has($name) Chris@14: { Chris@14: return isset($this->commandMap[$name]) && $this->container->has($this->commandMap[$name]); Chris@14: } Chris@14: Chris@14: /** Chris@14: * {@inheritdoc} Chris@14: */ Chris@14: public function getNames() Chris@14: { Chris@14: return array_keys($this->commandMap); Chris@14: } Chris@14: }