PluginProbe ʕ •ᴥ•ʔ
Cookiebot by Usercentrics – Automatic Cookie Banner for GDPR/CCPA & Google Consent Mode / 3.10.1
Cookiebot by Usercentrics – Automatic Cookie Banner for GDPR/CCPA & Google Consent Mode v3.10.1
4.7.2 4.7.1 trunk 2.3.0 2.4.0 2.4.1 2.4.2 2.5.0 3.0.0 3.0.1 3.1.0 3.10.0 3.10.1 3.11.1 3.11.2 3.11.3 3.2.0 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.6.0 3.6.1 3.6.2 3.6.5 3.6.6 3.7.0 3.7.1 3.8.0 3.9.0 4.0.0 4.0.1 4.0.2 4.0.3 4.1.0 4.1.1 4.2.0 4.2.1 4.2.10 4.2.11 4.2.12 4.2.13 4.2.14 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 4.2.7 4.2.8 4.2.9 4.3.0 4.3.1 4.3.10 4.3.11 4.3.12 4.3.2 4.3.3 4.3.4 4.3.5 4.3.6 4.3.7 4.3.7.1 4.3.8 4.3.9 4.3.9.1 4.4.0 4.4.1 4.4.2 4.5.0 4.5.1 4.5.10 4.5.11 4.5.2 4.5.3 4.5.4 4.5.5 4.5.6 4.5.7 4.5.8 4.5.9 4.6.0 4.6.1 4.6.2 4.6.3 4.6.4 4.6.5 4.6.6 4.6.7 4.7.0
cookiebot / addons / lib / ioc / php-di / invoker / src / ParameterResolver / ResolverChain.php
cookiebot / addons / lib / ioc / php-di / invoker / src / ParameterResolver Last commit date
Container 7 years ago AssociativeArrayResolver.php 7 years ago DefaultValueResolver.php 7 years ago NumericArrayResolver.php 7 years ago ParameterResolver.php 7 years ago ResolverChain.php 7 years ago TypeHintResolver.php 7 years ago
ResolverChain.php
70 lines
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 <matthieu@mnapoli.fr>
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