Mercurial > hg > isophonics-drupal-site
comparison vendor/symfony/dependency-injection/Compiler/ResolveParameterPlaceHoldersPass.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 | 4c8ae668cc8c |
children | 129ea1e6d783 |
comparison
equal
deleted
inserted
replaced
13:5fb285c0d0e3 | 14:1fec387a4317 |
---|---|
10 */ | 10 */ |
11 | 11 |
12 namespace Symfony\Component\DependencyInjection\Compiler; | 12 namespace Symfony\Component\DependencyInjection\Compiler; |
13 | 13 |
14 use Symfony\Component\DependencyInjection\ContainerBuilder; | 14 use Symfony\Component\DependencyInjection\ContainerBuilder; |
15 use Symfony\Component\DependencyInjection\Definition; | |
15 use Symfony\Component\DependencyInjection\Exception\ParameterNotFoundException; | 16 use Symfony\Component\DependencyInjection\Exception\ParameterNotFoundException; |
16 | 17 |
17 /** | 18 /** |
18 * Resolves all parameter placeholders "%somevalue%" to their real values. | 19 * Resolves all parameter placeholders "%somevalue%" to their real values. |
19 * | 20 * |
20 * @author Johannes M. Schmitt <schmittjoh@gmail.com> | 21 * @author Johannes M. Schmitt <schmittjoh@gmail.com> |
21 */ | 22 */ |
22 class ResolveParameterPlaceHoldersPass implements CompilerPassInterface | 23 class ResolveParameterPlaceHoldersPass extends AbstractRecursivePass |
23 { | 24 { |
25 private $bag; | |
26 private $resolveArrays; | |
27 | |
28 public function __construct($resolveArrays = true) | |
29 { | |
30 $this->resolveArrays = $resolveArrays; | |
31 } | |
32 | |
24 /** | 33 /** |
25 * Processes the ContainerBuilder to resolve parameter placeholders. | 34 * {@inheritdoc} |
26 * | |
27 * @param ContainerBuilder $container | |
28 * | 35 * |
29 * @throws ParameterNotFoundException | 36 * @throws ParameterNotFoundException |
30 */ | 37 */ |
31 public function process(ContainerBuilder $container) | 38 public function process(ContainerBuilder $container) |
32 { | 39 { |
33 $parameterBag = $container->getParameterBag(); | 40 $this->bag = $container->getParameterBag(); |
34 | 41 |
35 foreach ($container->getDefinitions() as $id => $definition) { | 42 try { |
36 try { | 43 parent::process($container); |
37 $definition->setClass($parameterBag->resolveValue($definition->getClass())); | |
38 $definition->setFile($parameterBag->resolveValue($definition->getFile())); | |
39 $definition->setArguments($parameterBag->resolveValue($definition->getArguments())); | |
40 | 44 |
41 $factory = $definition->getFactory(); | 45 $aliases = array(); |
46 foreach ($container->getAliases() as $name => $target) { | |
47 $this->currentId = $name; | |
48 $aliases[$this->bag->resolveValue($name)] = $target; | |
49 } | |
50 $container->setAliases($aliases); | |
51 } catch (ParameterNotFoundException $e) { | |
52 $e->setSourceId($this->currentId); | |
42 | 53 |
43 if (is_array($factory) && isset($factory[0])) { | 54 throw $e; |
44 $factory[0] = $parameterBag->resolveValue($factory[0]); | 55 } |
45 $definition->setFactory($factory); | |
46 } | |
47 | 56 |
48 $calls = array(); | 57 $this->bag->resolve(); |
49 foreach ($definition->getMethodCalls() as $name => $arguments) { | 58 $this->bag = null; |
50 $calls[$parameterBag->resolveValue($name)] = $parameterBag->resolveValue($arguments); | 59 } |
51 } | |
52 $definition->setMethodCalls($calls); | |
53 | 60 |
54 $definition->setProperties($parameterBag->resolveValue($definition->getProperties())); | 61 protected function processValue($value, $isRoot = false) |
55 } catch (ParameterNotFoundException $e) { | 62 { |
56 $e->setSourceId($id); | 63 if (is_string($value)) { |
64 $v = $this->bag->resolveValue($value); | |
57 | 65 |
58 throw $e; | 66 return $this->resolveArrays || !$v || !is_array($v) ? $v : $value; |
67 } | |
68 if ($value instanceof Definition) { | |
69 $value->setBindings($this->processValue($value->getBindings())); | |
70 $changes = $value->getChanges(); | |
71 if (isset($changes['class'])) { | |
72 $value->setClass($this->bag->resolveValue($value->getClass())); | |
73 } | |
74 if (isset($changes['file'])) { | |
75 $value->setFile($this->bag->resolveValue($value->getFile())); | |
59 } | 76 } |
60 } | 77 } |
61 | 78 |
62 $aliases = array(); | 79 $value = parent::processValue($value, $isRoot); |
63 foreach ($container->getAliases() as $name => $target) { | 80 |
64 $aliases[$parameterBag->resolveValue($name)] = $parameterBag->resolveValue($target); | 81 if ($value && is_array($value)) { |
82 $value = array_combine($this->bag->resolveValue(array_keys($value)), $value); | |
65 } | 83 } |
66 $container->setAliases($aliases); | |
67 | 84 |
68 $parameterBag->resolve(); | 85 return $value; |
69 } | 86 } |
70 } | 87 } |