PluginProbe
WPIDE – File Manager & Code Editor / 3.5.9
WPIDE – File Manager & Code Editor v3.5.9
3.5.9 3.5.8 3.5.7 2.0.14 2.0.15 2.0.16 2.0.2 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1 2.2 2.3 2.3.1 2.3.2 2.4.0 2.5 2.6 3.0 3.1 3.2 3.3 All 55 releases
← All changes | vendor/php-di/invoker/src/Invoker.php +16 -29 3.23.5.9 View file →
@@ -1,5 +1,5 @@
1 -<?php
1 +<?php declare(strict_types=1);
2 2
3 3 namespace Invoker;
4 4
5 5 use Invoker\Exception\NotCallableException;
@@ -10,32 +10,25 @@
10 10 use Invoker\ParameterResolver\ParameterResolver;
11 11 use Invoker\ParameterResolver\ResolverChain;
12 12 use Invoker\Reflection\CallableReflection;
13 13 use Psr\Container\ContainerInterface;
14 +use ReflectionParameter;
14 15
15 16 /**
16 17 * Invoke a callable.
17 - *
18 - * @author Matthieu Napoli <matthieu@mnapoli.fr>
19 18 */
20 19 class Invoker implements InvokerInterface
21 20 {
22 - /**
23 - * @var CallableResolver|null
24 - */
21 + /** @var CallableResolver|null */
25 22 private $callableResolver;
26 23
27 - /**
28 - * @var ParameterResolver
29 - */
24 + /** @var ParameterResolver */
30 25 private $parameterResolver;
31 26
32 - /**
33 - * @var ContainerInterface|null
34 - */
27 + /** @var ContainerInterface|null */
35 28 private $container;
36 29
37 - public function __construct(ParameterResolver $parameterResolver = null, ContainerInterface $container = null)
30 + public function __construct(?ParameterResolver $parameterResolver = null, ?ContainerInterface $container = null)
38 31 {
39 32 $this->parameterResolver = $parameterResolver ?: $this->createParameterResolver();
40 33 $this->container = $container;
41 34
@@ -46,9 +39,9 @@
46 39
47 40 /**
48 41 * {@inheritdoc}
49 42 */
50 - public function call($callable, array $parameters = array())
43 + public function call($callable, array $parameters = [])
51 44 {
52 45 if ($this->callableResolver) {
53 46 $callable = $this->callableResolver->resolve($callable);
54 47 }
@@ -61,9 +54,9 @@
61 54 }
62 55
63 56 $callableReflection = CallableReflection::create($callable);
64 57
65 - $args = $this->parameterResolver->getParameters($callableReflection, $parameters, array());
58 + $args = $this->parameterResolver->getParameters($callableReflection, $parameters, []);
66 59
67 60 // Sort by array key because call_user_func_array ignores numeric keys
68 61 ksort($args);
69 62
@@ -68,11 +61,10 @@
68 61 ksort($args);
69 62
70 63 // Check all parameters are resolved
71 64 $diff = array_diff_key($callableReflection->getParameters(), $args);
72 - if (! empty($diff)) {
73 - /** @var \ReflectionParameter $parameter */
74 - $parameter = reset($diff);
65 + $parameter = reset($diff);
66 + if ($parameter && \assert($parameter instanceof ReflectionParameter) && ! $parameter->isVariadic()) {
75 67 throw new NotEnoughParametersException(sprintf(
76 68 'Unable to invoke the callable because no value was given for parameter %d ($%s)',
77 69 $parameter->getPosition() + 1,
78 70 $parameter->name
@@ -83,32 +75,27 @@
83 75 }
84 76
85 77 /**
86 78 * Create the default parameter resolver.
87 - *
88 - * @return ParameterResolver
89 79 */
90 - private function createParameterResolver()
80 + private function createParameterResolver(): ParameterResolver
91 81 {
92 - return new ResolverChain(array(
82 + return new ResolverChain([
93 83 new NumericArrayResolver,
94 84 new AssociativeArrayResolver,
95 85 new DefaultValueResolver,
96 - ));
86 + ]);
97 87 }
98 88
99 89 /**
100 90 * @return ParameterResolver By default it's a ResolverChain
101 91 */
102 - public function getParameterResolver()
92 + public function getParameterResolver(): ParameterResolver
103 93 {
104 94 return $this->parameterResolver;
105 95 }
106 96
107 - /**
108 - * @return ContainerInterface|null
109 - */
110 - public function getContainer()
97 + public function getContainer(): ?ContainerInterface
111 98 {
112 99 return $this->container;
113 100 }
114 101
@@ -114,9 +101,9 @@
114 101
115 102 /**
116 103 * @return CallableResolver|null Returns null if no container was given in the constructor.
117 104 */
118 - public function getCallableResolver()
105 + public function getCallableResolver(): ?CallableResolver
119 106 {
120 107 return $this->callableResolver;
121 108 }
122 109 }