PluginProbe
Defender Security – Malware Scanner, Login Security & Firewall / 3.1.0
Defender Security – Malware Scanner, Login Security & Firewall v3.1.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 / vendor / php-di / invoker / src / ParameterResolver / ResolverChain.php

ResolverChain.php in Defender Security – Malware Scanner, Login Security & Firewall 3.1.0, at vendor/php-di/invoker/src/ParameterResolver/ResolverChain.php

70 lines 1.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Invoker\ParameterResolver;
4
5 use ReflectionFunctionAbstract;
6
7 /**
8 * Dispatches the call to other resolvers until all parameters are resolved.
9 *
10 * Chain of responsibility pattern.
11 *
12 * @author Matthieu Napoli <[email protected]>
13 */
14 class ResolverChain implements ParameterResolver
15 {
16 /**
17 * @var ParameterResolver[]
18 */
19 private $resolvers = array();
20
21 public function __construct(array $resolvers = array())
22 {
23 $this->resolvers = $resolvers;
24 }
25
26 public function getParameters(
27 ReflectionFunctionAbstract $reflection,
28 array $providedParameters,
29 array $resolvedParameters
30 ) {
31 $reflectionParameters = $reflection->getParameters();
32
33 foreach ($this->resolvers as $resolver) {
34 $resolvedParameters = $resolver->getParameters(
35 $reflection,
36 $providedParameters,
37 $resolvedParameters
38 );
39
40 $diff = array_diff_key($reflectionParameters, $resolvedParameters);
41 if (empty($diff)) {
42 // Stop traversing: all parameters are resolved
43 return $resolvedParameters;
44 }
45 }
46
47 return $resolvedParameters;
48 }
49
50 /**
51 * Push a parameter resolver after the ones already registered.
52 *
53 * @param ParameterResolver $resolver
54 */
55 public function appendResolver(ParameterResolver $resolver)
56 {
57 $this->resolvers[] = $resolver;
58 }
59
60 /**
61 * Insert a parameter resolver before the ones already registered.
62 *
63 * @param ParameterResolver $resolver
64 */
65 public function prependResolver(ParameterResolver $resolver)
66 {
67 array_unshift($this->resolvers, $resolver);
68 }
69 }
70