comparison vendor/symfony/console/CommandLoader/FactoryCommandLoader.php @ 14:1fec387a4317

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