PluginProbe
Defender Security – Malware Scanner, Login Security & Firewall / 5.4.0
Defender Security – Malware Scanner, Login Security & Firewall v5.4.0
6.3.0 6.2.3 6.2.4 6.2.0 6.2.1 6.2.2 6.1.0 5.3.1 5.4.0 5.4.1 5.5.0 5.5.1 5.6.0 5.6.1 5.6.2 5.7.0 5.7.1 5.7.2 5.8.0 5.8.1 5.9.0 6.0.0 6.0.1 3.0.1 3.1.0 All 141 releases
defender-security / lib / packages / DI / Definition / Resolver / ArrayResolver.php

ArrayResolver.php in Defender Security – Malware Scanner, Login Security & Firewall 5.4.0, at lib/packages/DI/Definition/Resolver/ArrayResolver.php

75 lines 2.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 declare(strict_types=1);
4
5 namespace WPMU_DEV\Defender\Vendor\DI\Definition\Resolver;
6
7 use WPMU_DEV\Defender\Vendor\DI\Definition\ArrayDefinition;
8 use WPMU_DEV\Defender\Vendor\DI\Definition\Definition;
9 use WPMU_DEV\Defender\Vendor\DI\DependencyException;
10 use Exception;
11
12 /**
13 * Resolves an array definition to a value.
14 *
15 * @since 5.0
16 * @author Matthieu Napoli <[email protected]>
17 */
18 class ArrayResolver implements DefinitionResolver
19 {
20 /**
21 * @var DefinitionResolver
22 */
23 private $definitionResolver;
24
25 /**
26 * @param DefinitionResolver $definitionResolver Used to resolve nested definitions.
27 */
28 public function __construct(DefinitionResolver $definitionResolver)
29 {
30 $this->definitionResolver = $definitionResolver;
31 }
32
33 /**
34 * Resolve an array definition to a value.
35 *
36 * An array definition can contain simple values or references to other entries.
37 *
38 * @param ArrayDefinition $definition
39 */
40 public function resolve(Definition $definition, array $parameters = []) : array
41 {
42 $values = $definition->getValues();
43
44 // Resolve nested definitions
45 array_walk_recursive($values, function (& $value, $key) use ($definition) {
46 if ($value instanceof Definition) {
47 $value = $this->resolveDefinition($value, $definition, $key);
48 }
49 });
50
51 return $values;
52 }
53
54 public function isResolvable(Definition $definition, array $parameters = []) : bool
55 {
56 return true;
57 }
58
59 private function resolveDefinition(Definition $value, ArrayDefinition $definition, $key)
60 {
61 try {
62 return $this->definitionResolver->resolve($value);
63 } catch (DependencyException $e) {
64 throw $e;
65 } catch (Exception $e) {
66 throw new DependencyException(sprintf(
67 'Error while resolving %s[%s]. %s',
68 $definition->getName(),
69 $key,
70 $e->getMessage()
71 ), 0, $e);
72 }
73 }
74 }
75