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 / invoker / src / ParameterResolver / ResolverChain.php

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

48 lines 1.5 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\Invoker\ParameterResolver;
5
6 use ReflectionFunctionAbstract;
7 /**
8 * Dispatches the call to other resolvers until all parameters are resolved.
9 *
10 * Chain of responsibility pattern.
11 */
12 class ResolverChain implements ParameterResolver
13 {
14 /** @var ParameterResolver[] */
15 private $resolvers;
16 public function __construct(array $resolvers = [])
17 {
18 $this->resolvers = $resolvers;
19 }
20 public function getParameters(ReflectionFunctionAbstract $reflection, array $providedParameters, array $resolvedParameters) : array
21 {
22 $reflectionParameters = $reflection->getParameters();
23 foreach ($this->resolvers as $resolver) {
24 $resolvedParameters = $resolver->getParameters($reflection, $providedParameters, $resolvedParameters);
25 $diff = \array_diff_key($reflectionParameters, $resolvedParameters);
26 if (empty($diff)) {
27 // Stop traversing: all parameters are resolved
28 return $resolvedParameters;
29 }
30 }
31 return $resolvedParameters;
32 }
33 /**
34 * Push a parameter resolver after the ones already registered.
35 */
36 public function appendResolver(ParameterResolver $resolver) : void
37 {
38 $this->resolvers[] = $resolver;
39 }
40 /**
41 * Insert a parameter resolver before the ones already registered.
42 */
43 public function prependResolver(ParameterResolver $resolver) : void
44 {
45 \array_unshift($this->resolvers, $resolver);
46 }
47 }
48