Mercurial > hg > isophonics-drupal-site
annotate vendor/symfony/console/CommandLoader/ContainerCommandLoader.php @ 19:fa3358dc1485 tip
Add ndrum files
author | Chris Cannam |
---|---|
date | Wed, 28 Aug 2019 13:14:47 +0100 |
parents | 1fec387a4317 |
children |
rev | line source |
---|---|
Chris@14 | 1 <?php |
Chris@14 | 2 |
Chris@14 | 3 namespace Symfony\Component\Console\CommandLoader; |
Chris@14 | 4 |
Chris@14 | 5 use Psr\Container\ContainerInterface; |
Chris@14 | 6 use Symfony\Component\Console\Exception\CommandNotFoundException; |
Chris@14 | 7 |
Chris@14 | 8 /** |
Chris@14 | 9 * Loads commands from a PSR-11 container. |
Chris@14 | 10 * |
Chris@14 | 11 * @author Robin Chalas <robin.chalas@gmail.com> |
Chris@14 | 12 */ |
Chris@14 | 13 class ContainerCommandLoader implements CommandLoaderInterface |
Chris@14 | 14 { |
Chris@14 | 15 private $container; |
Chris@14 | 16 private $commandMap; |
Chris@14 | 17 |
Chris@14 | 18 /** |
Chris@14 | 19 * @param ContainerInterface $container A container from which to load command services |
Chris@14 | 20 * @param array $commandMap An array with command names as keys and service ids as values |
Chris@14 | 21 */ |
Chris@14 | 22 public function __construct(ContainerInterface $container, array $commandMap) |
Chris@14 | 23 { |
Chris@14 | 24 $this->container = $container; |
Chris@14 | 25 $this->commandMap = $commandMap; |
Chris@14 | 26 } |
Chris@14 | 27 |
Chris@14 | 28 /** |
Chris@14 | 29 * {@inheritdoc} |
Chris@14 | 30 */ |
Chris@14 | 31 public function get($name) |
Chris@14 | 32 { |
Chris@14 | 33 if (!$this->has($name)) { |
Chris@14 | 34 throw new CommandNotFoundException(sprintf('Command "%s" does not exist.', $name)); |
Chris@14 | 35 } |
Chris@14 | 36 |
Chris@14 | 37 return $this->container->get($this->commandMap[$name]); |
Chris@14 | 38 } |
Chris@14 | 39 |
Chris@14 | 40 /** |
Chris@14 | 41 * {@inheritdoc} |
Chris@14 | 42 */ |
Chris@14 | 43 public function has($name) |
Chris@14 | 44 { |
Chris@14 | 45 return isset($this->commandMap[$name]) && $this->container->has($this->commandMap[$name]); |
Chris@14 | 46 } |
Chris@14 | 47 |
Chris@14 | 48 /** |
Chris@14 | 49 * {@inheritdoc} |
Chris@14 | 50 */ |
Chris@14 | 51 public function getNames() |
Chris@14 | 52 { |
Chris@14 | 53 return array_keys($this->commandMap); |
Chris@14 | 54 } |
Chris@14 | 55 } |