PluginProbe
Defender Security – Malware Scanner, Login Security & Firewall / 6.0.1
Defender Security – Malware Scanner, Login Security & Firewall v6.0.1
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 / Invoker / DefinitionParameterResolver.php

DefinitionParameterResolver.php in Defender Security – Malware Scanner, Login Security & Firewall 6.0.1, at lib/packages/DI/Invoker/DefinitionParameterResolver.php

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