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 } |
