PluginProbe
Elementor Website Builder – more than just a page builder / 3.26.0-dev5
Elementor Website Builder – more than just a page builder v3.26.0-dev5
4.3.0-beta3 4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 4.1.0-beta2 4.1.0-dev2 4.0.8 4.1.0-beta1 4.1.0-dev1 All 452 releases
elementor / vendor_prefixed / php-di / php-di / src / Definition / Resolver / ArrayResolver.php

ArrayResolver.php in Elementor Website Builder – more than just a page builder 3.26.0-dev5, at vendor_prefixed/php-di/php-di/src/Definition/Resolver/ArrayResolver.php

62 lines 1.9 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 namespace ElementorDeps\DI\Definition\Resolver;
5
6 use ElementorDeps\DI\Definition\ArrayDefinition;
7 use ElementorDeps\DI\Definition\Definition;
8 use ElementorDeps\DI\DependencyException;
9 use Exception;
10 /**
11 * Resolves an array definition to a value.
12 *
13 * @since 5.0
14 * @author Matthieu Napoli <matthieu@mnapoli.fr>
15 */
16 class ArrayResolver implements DefinitionResolver
17 {
18 /**
19 * @var DefinitionResolver
20 */
21 private $definitionResolver;
22 /**
23 * @param DefinitionResolver $definitionResolver Used to resolve nested definitions.
24 */
25 public function __construct(DefinitionResolver $definitionResolver)
26 {
27 $this->definitionResolver = $definitionResolver;
28 }
29 /**
30 * Resolve an array definition to a value.
31 *
32 * An array definition can contain simple values or references to other entries.
33 *
34 * @param ArrayDefinition $definition
35 */
36 public function resolve(Definition $definition, array $parameters = []) : array
37 {
38 $values = $definition->getValues();
39 // Resolve nested definitions
40 \array_walk_recursive($values, function (&$value, $key) use($definition) {
41 if ($value instanceof Definition) {
42 $value = $this->resolveDefinition($value, $definition, $key);
43 }
44 });
45 return $values;
46 }
47 public function isResolvable(Definition $definition, array $parameters = []) : bool
48 {
49 return \true;
50 }
51 private function resolveDefinition(Definition $value, ArrayDefinition $definition, $key)
52 {
53 try {
54 return $this->definitionResolver->resolve($value);
55 } catch (DependencyException $e) {
56 throw $e;
57 } catch (Exception $e) {
58 throw new DependencyException(\sprintf('Error while resolving %s[%s]. %s', $definition->getName(), $key, $e->getMessage()), 0, $e);
59 }
60 }
61 }
62