PluginProbe
UpStream: a Project Management Plugin for WordPress / trunk
UpStream: a Project Management Plugin for WordPress vtrunk
trunk 1.39.0 1.39.1 1.39.2 1.39.3 2.0.7 2.1.0
upstream / vendor / symfony / console / CommandLoader / FactoryCommandLoader.php

FactoryCommandLoader.php in UpStream: a Project Management Plugin for WordPress trunk, at vendor/symfony/console/CommandLoader/FactoryCommandLoader.php

63 lines 1.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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 }
63