Passed
Pull Request — master (#772)
by Aleksei
06:58
created
src/Attributes/src/Internal/Instantiator/NamedArgumentsInstantiator.php 2 patches
Spacing   +23 added lines, -23 removed lines patch added patch discarded remove patch
@@ -49,17 +49,17 @@  discard block
 block discarded – undo
49 49
      */
50 50
     public function instantiate(\ReflectionClass $attr, array $arguments, \Reflector $context = null): object
51 51
     {
52
-        if ($this->isNamedArgumentsSupported()) {
53
-            try {
52
+        if ($this->isNamedArgumentsSupported()){
53
+            try{
54 54
                 return $attr->newInstanceArgs($arguments);
55
-            } catch (\Throwable $e) {
55
+            }catch (\Throwable $e){
56 56
                 throw Exception::withLocation($e, $attr->getFileName(), $attr->getStartLine());
57 57
             }
58 58
         }
59 59
 
60 60
         $constructor = $this->getConstructor($attr);
61 61
 
62
-        if ($constructor === null) {
62
+        if ($constructor === null){
63 63
             return $attr->newInstanceWithoutConstructor();
64 64
         }
65 65
 
@@ -78,9 +78,9 @@  discard block
 block discarded – undo
78 78
      */
79 79
     private function resolveParameters(\ReflectionClass $ctx, \ReflectionMethod $constructor, array $arguments): array
80 80
     {
81
-        try {
81
+        try{
82 82
             return $this->doResolveParameters($ctx, $constructor, $arguments);
83
-        } catch (\Throwable $e) {
83
+        }catch (\Throwable $e){
84 84
             throw Exception::withLocation($e, $constructor->getFileName(), $constructor->getStartLine());
85 85
         }
86 86
     }
@@ -92,16 +92,16 @@  discard block
 block discarded – undo
92 92
     {
93 93
         $namedArgsBegin = $this->analyzeKeys($arguments);
94 94
 
95
-        if ($namedArgsBegin === null) {
95
+        if ($namedArgsBegin === null){
96 96
             // Only numeric / positional keys exist.
97 97
             return $arguments;
98 98
         }
99 99
 
100
-        if ($namedArgsBegin === 0) {
100
+        if ($namedArgsBegin === 0){
101 101
             // Only named keys exist.
102 102
             $passed = [];
103 103
             $named = $arguments;
104
-        } else {
104
+        }else{
105 105
             // Numeric/positional keys followed by named keys.
106 106
             // No need to preserve numeric keys.
107 107
             $passed = array_slice($arguments, 0, $namedArgsBegin);
@@ -135,11 +135,11 @@  discard block
 block discarded – undo
135 135
         $arguments = \array_merge($arguments);
136 136
 
137 137
         $i = 0;
138
-        foreach ($arguments as $k => $_) {
139
-            if ($k !== $i) {
138
+        foreach ($arguments as $k => $_){
139
+            if ($k !== $i){
140 140
                 // This must be a string key.
141 141
                 // Any further numeric keys are illegal.
142
-                if (\array_key_exists($i, $arguments)) {
142
+                if (\array_key_exists($i, $arguments)){
143 143
                     throw new \BadMethodCallException(self::ERROR_POSITIONAL_AFTER_NAMED);
144 144
                 }
145 145
                 return $i;
@@ -171,25 +171,25 @@  discard block
 block discarded – undo
171 171
     {
172 172
         // Analyze parameters.
173 173
         $n = count($parameters);
174
-        if ($n > 0 && end($parameters)->isVariadic()) {
174
+        if ($n > 0 && end($parameters)->isVariadic()){
175 175
             $variadicParameter = end($parameters);
176 176
             // Don't include the variadic parameter in the mapping process.
177 177
             --$n;
178
-        } else {
178
+        }else{
179 179
             $variadicParameter = null;
180 180
         }
181 181
 
182 182
         // Process parameters that are not already filled with positional args.
183 183
         // This loop will do nothing if $namedArgsBegin >= $n. That's ok.
184
-        for ($i = $namedArgsBegin; $i < $n; ++$i) {
184
+        for ($i = $namedArgsBegin; $i < $n; ++$i){
185 185
             $parameter = $parameters[$i];
186 186
             $k = $parameter->getName();
187
-            if (array_key_exists($k, $named)) {
187
+            if (array_key_exists($k, $named)){
188 188
                 $passed[] = $named[$k];
189 189
                 unset($named[$k]);
190
-            } elseif ($parameter->isDefaultValueAvailable()) {
190
+            } elseif ($parameter->isDefaultValueAvailable()){
191 191
                 $passed[] = $parameter->getDefaultValue();
192
-            } else {
192
+            }else{
193 193
                 $message = \vsprintf(self::ERROR_ARGUMENT_NOT_PASSED, [
194 194
                     $ctx->getName(),
195 195
                     $parameter->getPosition() + 1,
@@ -200,7 +200,7 @@  discard block
 block discarded – undo
200 200
             }
201 201
         }
202 202
 
203
-        if ($named === []) {
203
+        if ($named === []){
204 204
             // No unknown argument names exist.
205 205
             return $passed;
206 206
         }
@@ -210,11 +210,11 @@  discard block
 block discarded – undo
210 210
         $badArgName = key($named);
211 211
 
212 212
         // Check collision with positional arguments.
213
-        foreach ($parameters as $i => $parameter) {
214
-            if ($i >= $namedArgsBegin) {
213
+        foreach ($parameters as $i => $parameter){
214
+            if ($i >= $namedArgsBegin){
215 215
                 break;
216 216
             }
217
-            if ($parameter->getName() === $badArgName) {
217
+            if ($parameter->getName() === $badArgName){
218 218
                 // The named argument overwrites a positional argument.
219 219
                 $message = \sprintf(self::ERROR_OVERWRITE_ARGUMENT, $badArgName);
220 220
                 throw new \BadMethodCallException($message);
@@ -222,7 +222,7 @@  discard block
 block discarded – undo
222 222
         }
223 223
 
224 224
         // Special handling if a variadic parameter is present.
225
-        if ($variadicParameter !== null) {
225
+        if ($variadicParameter !== null){
226 226
             // The last parameter is variadic.
227 227
             // Since PHP 8+, variadic parameters can consume named arguments.
228 228
             // However, this code only runs if PHP < 8.
Please login to merge, or discard this patch.
Braces   +52 added lines, -23 removed lines patch added patch discarded remove patch
@@ -49,17 +49,22 @@  discard block
 block discarded – undo
49 49
      */
50 50
     public function instantiate(\ReflectionClass $attr, array $arguments, \Reflector $context = null): object
51 51
     {
52
-        if ($this->isNamedArgumentsSupported()) {
53
-            try {
52
+        if ($this->isNamedArgumentsSupported())
53
+        {
54
+            try
55
+            {
54 56
                 return $attr->newInstanceArgs($arguments);
55
-            } catch (\Throwable $e) {
57
+            }
58
+            catch (\Throwable $e)
59
+            {
56 60
                 throw Exception::withLocation($e, $attr->getFileName(), $attr->getStartLine());
57 61
             }
58 62
         }
59 63
 
60 64
         $constructor = $this->getConstructor($attr);
61 65
 
62
-        if ($constructor === null) {
66
+        if ($constructor === null)
67
+        {
63 68
             return $attr->newInstanceWithoutConstructor();
64 69
         }
65 70
 
@@ -78,9 +83,12 @@  discard block
 block discarded – undo
78 83
      */
79 84
     private function resolveParameters(\ReflectionClass $ctx, \ReflectionMethod $constructor, array $arguments): array
80 85
     {
81
-        try {
86
+        try
87
+        {
82 88
             return $this->doResolveParameters($ctx, $constructor, $arguments);
83
-        } catch (\Throwable $e) {
89
+        }
90
+        catch (\Throwable $e)
91
+        {
84 92
             throw Exception::withLocation($e, $constructor->getFileName(), $constructor->getStartLine());
85 93
         }
86 94
     }
@@ -92,16 +100,20 @@  discard block
 block discarded – undo
92 100
     {
93 101
         $namedArgsBegin = $this->analyzeKeys($arguments);
94 102
 
95
-        if ($namedArgsBegin === null) {
103
+        if ($namedArgsBegin === null)
104
+        {
96 105
             // Only numeric / positional keys exist.
97 106
             return $arguments;
98 107
         }
99 108
 
100
-        if ($namedArgsBegin === 0) {
109
+        if ($namedArgsBegin === 0)
110
+        {
101 111
             // Only named keys exist.
102 112
             $passed = [];
103 113
             $named = $arguments;
104
-        } else {
114
+        }
115
+        else
116
+        {
105 117
             // Numeric/positional keys followed by named keys.
106 118
             // No need to preserve numeric keys.
107 119
             $passed = array_slice($arguments, 0, $namedArgsBegin);
@@ -135,11 +147,14 @@  discard block
 block discarded – undo
135 147
         $arguments = \array_merge($arguments);
136 148
 
137 149
         $i = 0;
138
-        foreach ($arguments as $k => $_) {
139
-            if ($k !== $i) {
150
+        foreach ($arguments as $k => $_)
151
+        {
152
+            if ($k !== $i)
153
+            {
140 154
                 // This must be a string key.
141 155
                 // Any further numeric keys are illegal.
142
-                if (\array_key_exists($i, $arguments)) {
156
+                if (\array_key_exists($i, $arguments))
157
+                {
143 158
                     throw new \BadMethodCallException(self::ERROR_POSITIONAL_AFTER_NAMED);
144 159
                 }
145 160
                 return $i;
@@ -171,25 +186,34 @@  discard block
 block discarded – undo
171 186
     {
172 187
         // Analyze parameters.
173 188
         $n = count($parameters);
174
-        if ($n > 0 && end($parameters)->isVariadic()) {
189
+        if ($n > 0 && end($parameters)->isVariadic())
190
+        {
175 191
             $variadicParameter = end($parameters);
176 192
             // Don't include the variadic parameter in the mapping process.
177 193
             --$n;
178
-        } else {
194
+        }
195
+        else
196
+        {
179 197
             $variadicParameter = null;
180 198
         }
181 199
 
182 200
         // Process parameters that are not already filled with positional args.
183 201
         // This loop will do nothing if $namedArgsBegin >= $n. That's ok.
184
-        for ($i = $namedArgsBegin; $i < $n; ++$i) {
202
+        for ($i = $namedArgsBegin; $i < $n; ++$i)
203
+        {
185 204
             $parameter = $parameters[$i];
186 205
             $k = $parameter->getName();
187
-            if (array_key_exists($k, $named)) {
206
+            if (array_key_exists($k, $named))
207
+            {
188 208
                 $passed[] = $named[$k];
189 209
                 unset($named[$k]);
190
-            } elseif ($parameter->isDefaultValueAvailable()) {
210
+            }
211
+            elseif ($parameter->isDefaultValueAvailable())
212
+            {
191 213
                 $passed[] = $parameter->getDefaultValue();
192
-            } else {
214
+            }
215
+            else
216
+            {
193 217
                 $message = \vsprintf(self::ERROR_ARGUMENT_NOT_PASSED, [
194 218
                     $ctx->getName(),
195 219
                     $parameter->getPosition() + 1,
@@ -200,7 +224,8 @@  discard block
 block discarded – undo
200 224
             }
201 225
         }
202 226
 
203
-        if ($named === []) {
227
+        if ($named === [])
228
+        {
204 229
             // No unknown argument names exist.
205 230
             return $passed;
206 231
         }
@@ -210,11 +235,14 @@  discard block
 block discarded – undo
210 235
         $badArgName = key($named);
211 236
 
212 237
         // Check collision with positional arguments.
213
-        foreach ($parameters as $i => $parameter) {
214
-            if ($i >= $namedArgsBegin) {
238
+        foreach ($parameters as $i => $parameter)
239
+        {
240
+            if ($i >= $namedArgsBegin)
241
+            {
215 242
                 break;
216 243
             }
217
-            if ($parameter->getName() === $badArgName) {
244
+            if ($parameter->getName() === $badArgName)
245
+            {
218 246
                 // The named argument overwrites a positional argument.
219 247
                 $message = \sprintf(self::ERROR_OVERWRITE_ARGUMENT, $badArgName);
220 248
                 throw new \BadMethodCallException($message);
@@ -222,7 +250,8 @@  discard block
 block discarded – undo
222 250
         }
223 251
 
224 252
         // Special handling if a variadic parameter is present.
225
-        if ($variadicParameter !== null) {
253
+        if ($variadicParameter !== null)
254
+        {
226 255
             // The last parameter is variadic.
227 256
             // Since PHP 8+, variadic parameters can consume named arguments.
228 257
             // However, this code only runs if PHP < 8.
Please login to merge, or discard this patch.