PluginProbe ʕ •ᴥ•ʔ
Cookiebot by Usercentrics – Automatic Cookie Banner for GDPR/CCPA & Google Consent Mode / 3.11.1
Cookiebot by Usercentrics – Automatic Cookie Banner for GDPR/CCPA & Google Consent Mode v3.11.1
4.7.2 4.7.1 trunk 2.3.0 2.4.0 2.4.1 2.4.2 2.5.0 3.0.0 3.0.1 3.1.0 3.10.0 3.10.1 3.11.1 3.11.2 3.11.3 3.2.0 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.6.0 3.6.1 3.6.2 3.6.5 3.6.6 3.7.0 3.7.1 3.8.0 3.9.0 4.0.0 4.0.1 4.0.2 4.0.3 4.1.0 4.1.1 4.2.0 4.2.1 4.2.10 4.2.11 4.2.12 4.2.13 4.2.14 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 4.2.7 4.2.8 4.2.9 4.3.0 4.3.1 4.3.10 4.3.11 4.3.12 4.3.2 4.3.3 4.3.4 4.3.5 4.3.6 4.3.7 4.3.7.1 4.3.8 4.3.9 4.3.9.1 4.4.0 4.4.1 4.4.2 4.5.0 4.5.1 4.5.10 4.5.11 4.5.2 4.5.3 4.5.4 4.5.5 4.5.6 4.5.7 4.5.8 4.5.9 4.6.0 4.6.1 4.6.2 4.6.3 4.6.4 4.6.5 4.6.6 4.6.7 4.7.0
cookiebot / addons / inc / Dependencies / DI / Definition / Resolver / ArrayResolver.php
cookiebot / addons / inc / Dependencies / DI / Definition / Resolver Last commit date
AliasResolver.php 5 years ago ArrayResolver.php 5 years ago DecoratorResolver.php 5 years ago DefinitionResolver.php 5 years ago EnvironmentVariableResolver.php 5 years ago FactoryResolver.php 5 years ago InstanceInjector.php 5 years ago ObjectCreator.php 5 years ago ParameterResolver.php 5 years ago ResolverDispatcher.php 5 years ago StringResolver.php 5 years ago ValueResolver.php 5 years ago
ArrayResolver.php
106 lines
1 <?php
2 /**
3 * PHP-DI
4 *
5 * @link http://mnapoli.github.com/PHP-DI/
6 * @copyright Matthieu Napoli (http://mnapoli.fr/)
7 * @license http://www.opensource.org/licenses/mit-license.php MIT (see the LICENSE file)
8 */
9
10 namespace Cybot\Dependencies\DI\Definition\Resolver;
11
12 use Cybot\Dependencies\DI\Definition\ArrayDefinition;
13 use Cybot\Dependencies\DI\Definition\Definition;
14 use Cybot\Dependencies\DI\Definition\Helper\DefinitionHelper;
15 use Cybot\Dependencies\DI\DependencyException;
16 use Exception;
17
18 /**
19 * Resolves an array definition to a value.
20 *
21 * @since 5.0
22 * @author Matthieu Napoli <matthieu@mnapoli.fr>
23 */
24 class ArrayResolver implements DefinitionResolver
25 {
26 /**
27 * @var DefinitionResolver
28 */
29 private $definitionResolver;
30
31 /**
32 * @param DefinitionResolver $definitionResolver Used to resolve nested definitions.
33 */
34 public function __construct(DefinitionResolver $definitionResolver)
35 {
36 $this->definitionResolver = $definitionResolver;
37 }
38
39 /**
40 * Resolve an array definition to a value.
41 *
42 * An array definition can contain simple values or references to other entries.
43 *
44 * @param ArrayDefinition $definition
45 *
46 * {@inheritdoc}
47 */
48 public function resolve(Definition $definition, array $parameters = [])
49 {
50 $this->assertIsArrayDefinition($definition);
51
52 $values = $definition->getValues();
53
54 $values = $this->resolveNestedDefinitions($definition, $values);
55
56 return $values;
57 }
58
59 /**
60 * {@inheritdoc}
61 */
62 public function isResolvable(Definition $definition, array $parameters = [])
63 {
64 $this->assertIsArrayDefinition($definition);
65
66 return true;
67 }
68
69 private function assertIsArrayDefinition(Definition $definition)
70 {
71 if (!$definition instanceof ArrayDefinition) {
72 throw new \InvalidArgumentException(sprintf(
73 'This definition resolver is only compatible with ArrayDefinition objects, %s given',
74 get_class($definition)
75 ));
76 }
77 }
78
79 private function resolveNestedDefinitions(ArrayDefinition $definition, array $values)
80 {
81 foreach ($values as $key => $value) {
82 if ($value instanceof DefinitionHelper) {
83 $values[$key] = $this->resolveDefinition($value, $definition, $key);
84 }
85 }
86
87 return $values;
88 }
89
90 private function resolveDefinition(DefinitionHelper $value, ArrayDefinition $definition, $key)
91 {
92 try {
93 return $this->definitionResolver->resolve($value->getDefinition(''));
94 } catch (DependencyException $e) {
95 throw $e;
96 } catch (Exception $e) {
97 throw new DependencyException(sprintf(
98 "Error while resolving %s[%s]. %s",
99 $definition->getName(),
100 $key,
101 $e->getMessage()
102 ), 0, $e);
103 }
104 }
105 }
106