PluginProbe
Defender Security – Malware Scanner, Login Security & Firewall / 5.7.2
Defender Security – Malware Scanner, Login Security & Firewall v5.7.2
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.7.2, at lib/packages/DI/Definition/Resolver/ArrayResolver.php

77 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 * @template-implements DefinitionResolver<ArrayDefinition>
16 *
17 * @since 5.0
18 * @author Matthieu Napoli <[email protected]>
19 */
20 class ArrayResolver implements DefinitionResolver
21 {
22 /**
23 * @param DefinitionResolver $definitionResolver Used to resolve nested definitions.
24 */
25 public function __construct(
26 private DefinitionResolver $definitionResolver,
27 ) {
28 }
29
30 /**
31 * {@inheritDoc}
32 *
33 * Resolve an array definition to a value.
34 *
35 * An array definition can contain simple values or references to other entries.
36 *
37 * @param ArrayDefinition $definition
38 */
39 public function resolve(Definition $definition, array $parameters = []) : array
40 {
41 $values = $definition->getValues();
42
43 // Resolve nested definitions
44 array_walk_recursive($values, function (& $value, $key) use ($definition) {
45 if ($value instanceof Definition) {
46 $value = $this->resolveDefinition($value, $definition, $key);
47 }
48 });
49
50 return $values;
51 }
52
53 public function isResolvable(Definition $definition, array $parameters = []) : bool
54 {
55 return true;
56 }
57
58 /**
59 * @throws DependencyException
60 */
61 private function resolveDefinition(Definition $value, ArrayDefinition $definition, int|string $key) : mixed
62 {
63 try {
64 return $this->definitionResolver->resolve($value);
65 } catch (DependencyException $e) {
66 throw $e;
67 } catch (Exception $e) {
68 throw new DependencyException(sprintf(
69 'Error while resolving %s[%s]. %s',
70 $definition->getName(),
71 $key,
72 $e->getMessage()
73 ), 0, $e);
74 }
75 }
76 }
77