PluginProbe
Elementor Website Builder – more than just a page builder / 3.27.4
Elementor Website Builder – more than just a page builder v3.27.4
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 / Invoker / DefinitionParameterResolver.php

DefinitionParameterResolver.php in Elementor Website Builder – more than just a page builder 3.27.4, at vendor_prefixed/php-di/php-di/src/Invoker/DefinitionParameterResolver.php

58 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 namespace ElementorDeps\DI\Invoker;
5
6 use ElementorDeps\DI\Definition\Definition;
7 use ElementorDeps\DI\Definition\Helper\DefinitionHelper;
8 use ElementorDeps\DI\Definition\Resolver\DefinitionResolver;
9 use ElementorDeps\Invoker\ParameterResolver\ParameterResolver;
10 use ReflectionFunctionAbstract;
11 /**
12 * Resolves callable parameters using definitions.
13 *
14 * @since 5.0
15 * @author Matthieu Napoli <matthieu@mnapoli.fr>
16 */
17 class DefinitionParameterResolver implements ParameterResolver
18 {
19 /**
20 * @var DefinitionResolver
21 */
22 private $definitionResolver;
23 public function __construct(DefinitionResolver $definitionResolver)
24 {
25 $this->definitionResolver = $definitionResolver;
26 }
27 public function getParameters(ReflectionFunctionAbstract $reflection, array $providedParameters, array $resolvedParameters) : array
28 {
29 // Skip parameters already resolved
30 if (!empty($resolvedParameters)) {
31 $providedParameters = \array_diff_key($providedParameters, $resolvedParameters);
32 }
33 foreach ($providedParameters as $key => $value) {
34 if ($value instanceof DefinitionHelper) {
35 $value = $value->getDefinition('');
36 }
37 if (!$value instanceof Definition) {
38 continue;
39 }
40 $value = $this->definitionResolver->resolve($value);
41 if (\is_int($key)) {
42 // Indexed by position
43 $resolvedParameters[$key] = $value;
44 } else {
45 // Indexed by parameter name
46 // TODO optimize?
47 $reflectionParameters = $reflection->getParameters();
48 foreach ($reflectionParameters as $reflectionParameter) {
49 if ($key === $reflectionParameter->name) {
50 $resolvedParameters[$reflectionParameter->getPosition()] = $value;
51 }
52 }
53 }
54 }
55 return $resolvedParameters;
56 }
57 }
58