Mercurial > hg > isophonics-drupal-site
annotate vendor/symfony/console/CommandLoader/FactoryCommandLoader.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 /* |
Chris@14 | 4 * This file is part of the Symfony package. |
Chris@14 | 5 * |
Chris@14 | 6 * (c) Fabien Potencier <fabien@symfony.com> |
Chris@14 | 7 * |
Chris@14 | 8 * For the full copyright and license information, please view the LICENSE |
Chris@14 | 9 * file that was distributed with this source code. |
Chris@14 | 10 */ |
Chris@14 | 11 |
Chris@14 | 12 namespace Symfony\Component\Console\CommandLoader; |
Chris@14 | 13 |
Chris@14 | 14 use Symfony\Component\Console\Exception\CommandNotFoundException; |
Chris@14 | 15 |
Chris@14 | 16 /** |
Chris@14 | 17 * A simple command loader using factories to instantiate commands lazily. |
Chris@14 | 18 * |
Chris@14 | 19 * @author Maxime Steinhausser <maxime.steinhausser@gmail.com> |
Chris@14 | 20 */ |
Chris@14 | 21 class FactoryCommandLoader implements CommandLoaderInterface |
Chris@14 | 22 { |
Chris@14 | 23 private $factories; |
Chris@14 | 24 |
Chris@14 | 25 /** |
Chris@14 | 26 * @param callable[] $factories Indexed by command names |
Chris@14 | 27 */ |
Chris@14 | 28 public function __construct(array $factories) |
Chris@14 | 29 { |
Chris@14 | 30 $this->factories = $factories; |
Chris@14 | 31 } |
Chris@14 | 32 |
Chris@14 | 33 /** |
Chris@14 | 34 * {@inheritdoc} |
Chris@14 | 35 */ |
Chris@14 | 36 public function has($name) |
Chris@14 | 37 { |
Chris@14 | 38 return isset($this->factories[$name]); |
Chris@14 | 39 } |
Chris@14 | 40 |
Chris@14 | 41 /** |
Chris@14 | 42 * {@inheritdoc} |
Chris@14 | 43 */ |
Chris@14 | 44 public function get($name) |
Chris@14 | 45 { |
Chris@14 | 46 if (!isset($this->factories[$name])) { |
Chris@14 | 47 throw new CommandNotFoundException(sprintf('Command "%s" does not exist.', $name)); |
Chris@14 | 48 } |
Chris@14 | 49 |
Chris@14 | 50 $factory = $this->factories[$name]; |
Chris@14 | 51 |
Chris@14 | 52 return $factory(); |
Chris@14 | 53 } |
Chris@14 | 54 |
Chris@14 | 55 /** |
Chris@14 | 56 * {@inheritdoc} |
Chris@14 | 57 */ |
Chris@14 | 58 public function getNames() |
Chris@14 | 59 { |
Chris@14 | 60 return array_keys($this->factories); |
Chris@14 | 61 } |
Chris@14 | 62 } |