Passed
Pull Request — master (#1045)
by Aleksei
10:54
created
src/Core/src/Internal/Proxy/ProxyClassRenderer.php 2 patches
Spacing   +16 added lines, -16 removed lines patch added patch discarded remove patch
@@ -16,23 +16,23 @@  discard block
 block discarded – undo
16 16
 
17 17
         $interface = $type->getName();
18 18
         $classBody = [];
19
-        foreach ($type->getMethods() as $method) {
20
-            if ($method->isConstructor()) {
19
+        foreach ($type->getMethods() as $method){
20
+            if ($method->isConstructor()){
21 21
                 continue;
22 22
             }
23 23
 
24 24
             $hasRefs = false;
25 25
             $return = $method->hasReturnType() && (string)$method->getReturnType() === 'void' ? '' : 'return ';
26
-            $call = ($method->isStatic() ? '::' : '->') . $method->getName();
26
+            $call = ($method->isStatic() ? '::' : '->').$method->getName();
27 27
             $context = $method->isStatic() ? 'null' : '$this->__container_proxy_context';
28 28
 
29 29
             $args = [];
30
-            foreach ($method->getParameters() as $param) {
30
+            foreach ($method->getParameters() as $param){
31 31
                 $hasRefs = $hasRefs || $param->isPassedByReference();
32
-                $args[] = ($param->isVariadic() ? '...' : '') . '$'. $param->getName();
32
+                $args[] = ($param->isVariadic() ? '...' : '').'$'.$param->getName();
33 33
             }
34 34
 
35
-            if (!$hasRefs && !$method->isVariadic()) {
35
+            if (!$hasRefs && !$method->isVariadic()){
36 36
                 $classBody[] = self::renderMethod($method, <<<PHP
37 37
                     {$return}\\Spiral\\Core\\Internal\\Proxy\\Resolver::resolve(
38 38
                         '{$interface}',
@@ -44,7 +44,7 @@  discard block
 block discarded – undo
44 44
 
45 45
             $argsStr = \implode(', ', $args);
46 46
 
47
-            if ($method->isVariadic()) {
47
+            if ($method->isVariadic()){
48 48
                 $classBody[] = self::renderMethod($method, <<<PHP
49 49
                     {$return}\\Spiral\\Core\\Internal\\Proxy\\Resolver::resolve(
50 50
                         '{$interface}',
@@ -83,7 +83,7 @@  discard block
 block discarded – undo
83 83
             $m->getName(),
84 84
             \implode(', ', \array_map([self::class, 'renderParameter'], $m->getParameters())),
85 85
             $m->hasReturnType()
86
-                ? ': ' . self::renderParameterTypes($m->getReturnType(), $m->getDeclaringClass())
86
+                ? ': '.self::renderParameterTypes($m->getReturnType(), $m->getDeclaringClass())
87 87
                 : '',
88 88
             $body,
89 89
         );
@@ -96,15 +96,15 @@  discard block
 block discarded – undo
96 96
             $param->hasType() ? self::renderParameterTypes($param->getType(), $param->getDeclaringClass()) : '',
97 97
             $param->isPassedByReference() ? '&' : '',
98 98
             $param->isVariadic() ? '...' : '',
99
-            '$' . $param->getName(),
100
-            $param->isOptional() && !$param->isVariadic() ? ' = ' . self::renderDefaultValue($param) : '',
99
+            '$'.$param->getName(),
100
+            $param->isOptional() && !$param->isVariadic() ? ' = '.self::renderDefaultValue($param) : '',
101 101
         ), ' ');
102 102
     }
103 103
 
104 104
     public static function renderParameterTypes(\ReflectionType $types, \ReflectionClass $class): string
105 105
     {
106
-        if ($types instanceof \ReflectionNamedType) {
107
-            return ($types->allowsNull() && $types->getName() !== 'mixed' ? '?' : '') . ($types->isBuiltin()
106
+        if ($types instanceof \ReflectionNamedType){
107
+            return ($types->allowsNull() && $types->getName() !== 'mixed' ? '?' : '').($types->isBuiltin()
108 108
                 ? $types->getName()
109 109
                 : self::normalizeClassType($types, $class));
110 110
         }
@@ -116,7 +116,7 @@  discard block
 block discarded – undo
116 116
         };
117 117
 
118 118
         $result = [];
119
-        foreach ($types as $type) {
119
+        foreach ($types as $type){
120 120
             $result[] = $type->isBuiltin()
121 121
                 ? $type->getName()
122 122
                 : self::normalizeClassType($type, $class);
@@ -127,12 +127,12 @@  discard block
 block discarded – undo
127 127
 
128 128
     public static function renderDefaultValue(\ReflectionParameter $param): string
129 129
     {
130
-        if ($param->isDefaultValueConstant()) {
130
+        if ($param->isDefaultValueConstant()){
131 131
             $result = $param->getDefaultValueConstantName();
132 132
 
133 133
             return \explode('::', $result)[0] === 'self'
134 134
                 ? $result
135
-                : '\\' . $result;
135
+                : '\\'.$result;
136 136
         }
137 137
 
138 138
         $cut = self::cutDefaultValue($param);
@@ -144,7 +144,7 @@  discard block
 block discarded – undo
144 144
 
145 145
     public static function normalizeClassType(\ReflectionNamedType $type, \ReflectionClass $class): string
146 146
     {
147
-        return '\\' . ($type->getName() === 'self' ? $class->getName() : $type->getName());
147
+        return '\\'.($type->getName() === 'self' ? $class->getName() : $type->getName());
148 148
     }
149 149
 
150 150
     private static function cutDefaultValue(\ReflectionParameter $param): string
Please login to merge, or discard this patch.
Braces   +16 added lines, -8 removed lines patch added patch discarded remove patch
@@ -16,8 +16,10 @@  discard block
 block discarded – undo
16 16
 
17 17
         $interface = $type->getName();
18 18
         $classBody = [];
19
-        foreach ($type->getMethods() as $method) {
20
-            if ($method->isConstructor()) {
19
+        foreach ($type->getMethods() as $method)
20
+        {
21
+            if ($method->isConstructor())
22
+            {
21 23
                 continue;
22 24
             }
23 25
 
@@ -27,12 +29,14 @@  discard block
 block discarded – undo
27 29
             $context = $method->isStatic() ? 'null' : '$this->__container_proxy_context';
28 30
 
29 31
             $args = [];
30
-            foreach ($method->getParameters() as $param) {
32
+            foreach ($method->getParameters() as $param)
33
+            {
31 34
                 $hasRefs = $hasRefs || $param->isPassedByReference();
32 35
                 $args[] = ($param->isVariadic() ? '...' : '') . '$'. $param->getName();
33 36
             }
34 37
 
35
-            if (!$hasRefs && !$method->isVariadic()) {
38
+            if (!$hasRefs && !$method->isVariadic())
39
+            {
36 40
                 $classBody[] = self::renderMethod($method, <<<PHP
37 41
                     {$return}\\Spiral\\Core\\Internal\\Proxy\\Resolver::resolve(
38 42
                         '{$interface}',
@@ -44,7 +48,8 @@  discard block
 block discarded – undo
44 48
 
45 49
             $argsStr = \implode(', ', $args);
46 50
 
47
-            if ($method->isVariadic()) {
51
+            if ($method->isVariadic())
52
+            {
48 53
                 $classBody[] = self::renderMethod($method, <<<PHP
49 54
                     {$return}\\Spiral\\Core\\Internal\\Proxy\\Resolver::resolve(
50 55
                         '{$interface}',
@@ -103,7 +108,8 @@  discard block
 block discarded – undo
103 108
 
104 109
     public static function renderParameterTypes(\ReflectionType $types, \ReflectionClass $class): string
105 110
     {
106
-        if ($types instanceof \ReflectionNamedType) {
111
+        if ($types instanceof \ReflectionNamedType)
112
+        {
107 113
             return ($types->allowsNull() && $types->getName() !== 'mixed' ? '?' : '') . ($types->isBuiltin()
108 114
                 ? $types->getName()
109 115
                 : self::normalizeClassType($types, $class));
@@ -116,7 +122,8 @@  discard block
 block discarded – undo
116 122
         };
117 123
 
118 124
         $result = [];
119
-        foreach ($types as $type) {
125
+        foreach ($types as $type)
126
+        {
120 127
             $result[] = $type->isBuiltin()
121 128
                 ? $type->getName()
122 129
                 : self::normalizeClassType($type, $class);
@@ -127,7 +134,8 @@  discard block
 block discarded – undo
127 134
 
128 135
     public static function renderDefaultValue(\ReflectionParameter $param): string
129 136
     {
130
-        if ($param->isDefaultValueConstant()) {
137
+        if ($param->isDefaultValueConstant())
138
+        {
131 139
             $result = $param->getDefaultValueConstantName();
132 140
 
133 141
             return \explode('::', $result)[0] === 'self'
Please login to merge, or discard this patch.
src/Core/src/Internal/Proxy/Resolver.php 2 patches
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -12,15 +12,15 @@
 block discarded – undo
12 12
  */
13 13
 final class Resolver
14 14
 {
15
-    public static function resolve(string $alias, \Stringable|string|null $context = null): object
15
+    public static function resolve(string $alias, \Stringable | string | null $context = null): object
16 16
     {
17 17
         $c = ContainerScope::getContainer() ?? throw new ContainerException('Proxy is out of scope.');
18 18
 
19
-        try {
19
+        try{
20 20
             $result = $c->get($alias, $context) ?? throw new ContainerException(
21 21
                 'Resolved `null` from the container.',
22 22
             );
23
-        } catch (ContainerException $e) {
23
+        }catch (ContainerException $e){
24 24
             throw new ContainerException(
25 25
                 // todo : find required scope
26 26
                 \sprintf('Unable to resolve `%s` in a Proxy.', $alias),
Please login to merge, or discard this patch.
Braces   +5 added lines, -2 removed lines patch added patch discarded remove patch
@@ -16,11 +16,14 @@
 block discarded – undo
16 16
     {
17 17
         $c = ContainerScope::getContainer() ?? throw new ContainerException('Proxy is out of scope.');
18 18
 
19
-        try {
19
+        try
20
+        {
20 21
             $result = $c->get($alias, $context) ?? throw new ContainerException(
21 22
                 'Resolved `null` from the container.',
22 23
             );
23
-        } catch (ContainerException $e) {
24
+        }
25
+        catch (ContainerException $e)
26
+        {
24 27
             throw new ContainerException(
25 28
                 // todo : find required scope
26 29
                 \sprintf('Unable to resolve `%s` in a Proxy.', $alias),
Please login to merge, or discard this patch.
src/Core/src/Internal/Proxy/ProxyTrait.php 1 patch
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -13,7 +13,7 @@
 block discarded – undo
13 13
 trait ProxyTrait
14 14
 {
15 15
     private static string $__container_proxy_alias;
16
-    private \Stringable|string|null $__container_proxy_context = null;
16
+    private \Stringable | string | null $__container_proxy_context = null;
17 17
 
18 18
     public function __call(string $name, array $arguments)
19 19
     {
Please login to merge, or discard this patch.
src/Core/src/Internal/Factory.php 2 patches
Spacing   +62 added lines, -62 removed lines patch added patch discarded remove patch
@@ -66,19 +66,19 @@  discard block
 block discarded – undo
66 66
      *
67 67
      * @throws \Throwable
68 68
      */
69
-    public function make(string $alias, array $parameters = [], Stringable|string|null $context = null): mixed
69
+    public function make(string $alias, array $parameters = [], Stringable | string | null $context = null): mixed
70 70
     {
71
-        if ($parameters === [] && \array_key_exists($alias, $this->state->singletons)) {
71
+        if ($parameters === [] && \array_key_exists($alias, $this->state->singletons)){
72 72
             return $this->state->singletons[$alias];
73 73
         }
74 74
 
75 75
         $binding = $this->state->bindings[$alias] ?? null;
76 76
 
77
-        if ($binding === null) {
77
+        if ($binding === null){
78 78
             return $this->resolveWithoutBinding($alias, $parameters, $context);
79 79
         }
80 80
 
81
-        try {
81
+        try{
82 82
             $this->tracer->push(
83 83
                 false,
84 84
                 action: 'resolve from binding',
@@ -106,7 +106,7 @@  discard block
 block discarded – undo
106 106
                     ->resolveWeakReference($binding, $alias, $context, $parameters),
107 107
                 default => $binding,
108 108
             };
109
-        } finally {
109
+        }finally{
110 110
             $this->state->bindings[$alias] ??= $binding;
111 111
             $this->tracer->pop(true);
112 112
             $this->tracer->pop(false);
@@ -120,18 +120,18 @@  discard block
 block discarded – undo
120 120
     private function resolveInjector(Injectable $binding, Ctx $ctx, array $arguments)
121 121
     {
122 122
         $context = $ctx->context;
123
-        try {
123
+        try{
124 124
             $reflection = $ctx->reflection ??= new \ReflectionClass($ctx->class);
125
-        } catch (\ReflectionException $e) {
125
+        }catch (\ReflectionException $e){
126 126
             throw new ContainerException($e->getMessage(), $e->getCode(), $e);
127 127
         }
128 128
 
129 129
         $injector = $binding->injector;
130 130
 
131
-        try {
131
+        try{
132 132
             $injectorInstance = \is_object($injector) ? $injector : $this->container->get($injector);
133 133
 
134
-            if (!$injectorInstance instanceof InjectorInterface) {
134
+            if (!$injectorInstance instanceof InjectorInterface){
135 135
                 throw new InjectionException(
136 136
                     \sprintf(
137 137
                         "Class '%s' must be an instance of InjectorInterface for '%s'.",
@@ -158,7 +158,7 @@  discard block
 block discarded – undo
158 158
                 default => (string)$context,
159 159
             });
160 160
 
161
-            if (!$reflection->isInstance($instance)) {
161
+            if (!$reflection->isInstance($instance)){
162 162
                 throw new InjectionException(
163 163
                     \sprintf(
164 164
                         "Invalid injection response for '%s'.",
@@ -168,7 +168,7 @@  discard block
 block discarded – undo
168 168
             }
169 169
 
170 170
             return $instance;
171
-        } finally {
171
+        }finally{
172 172
             $this->state->bindings[$ctx->class] ??= $binding;
173 173
         }
174 174
     }
@@ -176,18 +176,18 @@  discard block
 block discarded – undo
176 176
     private function resolveAlias(
177 177
         \Spiral\Core\Config\Alias $binding,
178 178
         string $alias,
179
-        Stringable|string|null $context,
179
+        Stringable | string | null $context,
180 180
         array $arguments,
181 181
     ): mixed {
182 182
         $result = $binding->alias === $alias
183 183
             ? $this->autowire(
184
-                new Ctx(alias: $alias, class: $binding->alias, context: $context, singleton: $binding->singleton),
184
+                new Ctx(alias : $alias, class : $binding->alias, context : $context, singleton : $binding->singleton),
185 185
                 $arguments,
186 186
             )
187 187
             //Binding is pointing to something else
188 188
             : $this->make($binding->alias, $arguments, $context);
189 189
 
190
-        if ($binding->singleton && $arguments === []) {
190
+        if ($binding->singleton && $arguments === []){
191 191
             $this->state->singletons[$alias] = $result;
192 192
         }
193 193
 
@@ -197,13 +197,13 @@  discard block
 block discarded – undo
197 197
     private function resolveShared(
198 198
         \Spiral\Core\Config\Shared $binding,
199 199
         string $alias,
200
-        Stringable|string|null $context,
200
+        Stringable | string | null $context,
201 201
         array $arguments,
202 202
     ): object {
203 203
         $avoidCache = $arguments !== [];
204 204
         return $avoidCache
205 205
             ? $this->createInstance(
206
-                new Ctx(alias: $alias, class: $binding->value::class, context: $context),
206
+                new Ctx(alias : $alias, class : $binding->value::class, context : $context),
207 207
                 $arguments,
208 208
             )
209 209
             : $binding->value;
@@ -212,7 +212,7 @@  discard block
 block discarded – undo
212 212
     private function resolveAutowire(
213 213
         \Spiral\Core\Config\Autowire $binding,
214 214
         string $alias,
215
-        Stringable|string|null $context,
215
+        Stringable | string | null $context,
216 216
         array $arguments,
217 217
     ): mixed {
218 218
         $instance = $binding->autowire->resolve($this, $arguments);
@@ -222,17 +222,17 @@  discard block
 block discarded – undo
222 222
     }
223 223
 
224 224
     private function resolveFactory(
225
-        \Spiral\Core\Config\Factory|DeferredFactory $binding,
225
+        \Spiral\Core\Config\Factory | DeferredFactory $binding,
226 226
         string $alias,
227
-        Stringable|string|null $context,
227
+        Stringable | string | null $context,
228 228
         array $arguments,
229 229
     ): mixed {
230 230
         $ctx = new Ctx(alias: $alias, class: $alias, context: $context, singleton: $binding->singleton);
231
-        try {
231
+        try{
232 232
             $instance = $binding::class === \Spiral\Core\Config\Factory::class && $binding->getParametersCount() === 0
233 233
                 ? ($binding->factory)()
234 234
                 : $this->invoker->invoke($binding->factory, $arguments);
235
-        } catch (NotCallableException $e) {
235
+        }catch (NotCallableException $e){
236 236
             throw new ContainerException(
237 237
                 $this->tracer->combineTraceMessage(\sprintf('Invalid binding for `%s`.', $ctx->alias)),
238 238
                 $e->getCode(),
@@ -246,24 +246,24 @@  discard block
 block discarded – undo
246 246
     private function resolveWeakReference(
247 247
         \Spiral\Core\Config\WeakReference $binding,
248 248
         string $alias,
249
-        Stringable|string|null $context,
249
+        Stringable | string | null $context,
250 250
         array $arguments,
251 251
     ): ?object {
252 252
         $avoidCache = $arguments !== [];
253 253
 
254
-        if (($avoidCache || $binding->reference->get() === null) && \class_exists($alias)) {
255
-            try {
254
+        if (($avoidCache || $binding->reference->get() === null) && \class_exists($alias)){
255
+            try{
256 256
                 $this->tracer->push(false, alias: $alias, source: WeakReference::class, context: $context);
257 257
 
258 258
                 $object = $this->createInstance(
259 259
                     new Ctx(alias: $alias, class: $alias, context: $context),
260 260
                     $arguments,
261 261
                 );
262
-                if ($avoidCache) {
262
+                if ($avoidCache){
263 263
                     return $object;
264 264
                 }
265 265
                 $binding->reference = WeakReference::create($object);
266
-            } catch (\Throwable) {
266
+            }catch (\Throwable){
267 267
                 throw new ContainerException(
268 268
                     $this->tracer->combineTraceMessage(
269 269
                         \sprintf(
@@ -273,7 +273,7 @@  discard block
 block discarded – undo
273 273
                         )
274 274
                     )
275 275
                 );
276
-            } finally {
276
+            }finally{
277 277
                 $this->tracer->pop();
278 278
             }
279 279
         }
@@ -284,22 +284,22 @@  discard block
 block discarded – undo
284 284
     private function resolveWithoutBinding(
285 285
         string $alias,
286 286
         array $parameters = [],
287
-        Stringable|string|null $context = null
287
+        Stringable | string | null $context = null
288 288
     ): mixed {
289 289
         $parent = $this->scope->getParent();
290 290
 
291
-        if ($parent !== null) {
292
-            try {
291
+        if ($parent !== null){
292
+            try{
293 293
                 $this->tracer->push(false, ...[
294 294
                     'current scope' => $this->scope->getScopeName(),
295 295
                     'jump to parent scope' => $this->scope->getParentScope()->getScopeName(),
296 296
                 ]);
297 297
                 return $parent->make($alias, $parameters, $context);
298
-            } catch (BadScopeException $e) {
299
-                if ($this->scope->getScopeName() !== $e->getScope()) {
298
+            }catch (BadScopeException $e){
299
+                if ($this->scope->getScopeName() !== $e->getScope()){
300 300
                     throw $e;
301 301
                 }
302
-            } catch (ContainerExceptionInterface $e) {
302
+            }catch (ContainerExceptionInterface $e){
303 303
                 $className = match (true) {
304 304
                     $e instanceof NotFoundException => NotFoundException::class,
305 305
                     default => ContainerException::class,
@@ -308,19 +308,19 @@  discard block
 block discarded – undo
308 308
                     'Can\'t resolve `%s`.',
309 309
                     $alias,
310 310
                 )), previous: $e);
311
-            } finally {
311
+            }finally{
312 312
                 $this->tracer->pop(false);
313 313
             }
314 314
         }
315 315
 
316 316
         $this->tracer->push(false, action: 'autowire', alias: $alias, context: $context);
317
-        try {
317
+        try{
318 318
             //No direct instructions how to construct class, make is automatically
319 319
             return $this->autowire(
320 320
                 new Ctx(alias: $alias, class: $alias, context: $context),
321 321
                 $parameters,
322 322
             );
323
-        } finally {
323
+        }finally{
324 324
             $this->tracer->pop(false);
325 325
         }
326 326
     }
@@ -341,7 +341,7 @@  discard block
 block discarded – undo
341 341
                 &&
342 342
                 (isset($this->state->injectors[$ctx->class]) || $this->binder->hasInjector($ctx->class))
343 343
         ))
344
-        ) {
344
+        ){
345 345
             throw new NotFoundException($this->tracer->combineTraceMessage(\sprintf(
346 346
                 'Can\'t resolve `%s`: undefined class or binding `%s`.',
347 347
                 $this->tracer->getRootAlias(),
@@ -370,7 +370,7 @@  discard block
 block discarded – undo
370 370
         // Check scope name
371 371
         $ctx->reflection = new \ReflectionClass($instance);
372 372
         $scopeName = ($ctx->reflection->getAttributes(ScopeAttribute::class)[0] ?? null)?->newInstance()->name;
373
-        if ($scopeName !== null && $scopeName !== $this->scope->getScopeName()) {
373
+        if ($scopeName !== null && $scopeName !== $this->scope->getScopeName()){
374 374
             throw new BadScopeException($scopeName, $instance::class);
375 375
         }
376 376
 
@@ -397,24 +397,24 @@  discard block
 block discarded – undo
397 397
         array $arguments,
398 398
     ): object {
399 399
         $class = $ctx->class;
400
-        try {
400
+        try{
401 401
             $ctx->reflection = $reflection = new \ReflectionClass($class);
402
-        } catch (\ReflectionException $e) {
402
+        }catch (\ReflectionException $e){
403 403
             throw new ContainerException($e->getMessage(), $e->getCode(), $e);
404 404
         }
405 405
 
406 406
         // Check scope name
407 407
         $scope = ($reflection->getAttributes(ScopeAttribute::class)[0] ?? null)?->newInstance()->name;
408
-        if ($scope !== null && $scope !== $this->scope->getScopeName()) {
408
+        if ($scope !== null && $scope !== $this->scope->getScopeName()){
409 409
             throw new BadScopeException($scope, $class);
410 410
         }
411 411
 
412 412
         // We have to construct class using external injector when we know the exact context
413
-        if ($arguments === [] && $this->binder->hasInjector($class)) {
413
+        if ($arguments === [] && $this->binder->hasInjector($class)){
414 414
             return $this->resolveInjector($this->state->bindings[$ctx->class], $ctx, $arguments);
415 415
         }
416 416
 
417
-        if (!$reflection->isInstantiable()) {
417
+        if (!$reflection->isInstantiable()){
418 418
             $itIs = match (true) {
419 419
                 $reflection->isEnum() => 'Enum',
420 420
                 $reflection->isAbstract() => 'Abstract class',
@@ -427,12 +427,12 @@  discard block
 block discarded – undo
427 427
 
428 428
         $constructor = $reflection->getConstructor();
429 429
 
430
-        if ($constructor !== null) {
431
-            try {
430
+        if ($constructor !== null){
431
+            try{
432 432
                 $this->tracer->push(false, action: 'resolve arguments', signature: $constructor);
433 433
                 $this->tracer->push(true);
434 434
                 $args = $this->resolver->resolveArguments($constructor, $arguments);
435
-            } catch (ValidationException $e) {
435
+            }catch (ValidationException $e){
436 436
                 throw new ContainerException(
437 437
                     $this->tracer->combineTraceMessage(
438 438
                         \sprintf(
@@ -442,22 +442,22 @@  discard block
 block discarded – undo
442 442
                         )
443 443
                     ),
444 444
                 );
445
-            } finally {
445
+            }finally{
446 446
                 $this->tracer->pop(true);
447 447
                 $this->tracer->pop(false);
448 448
             }
449
-            try {
449
+            try{
450 450
                 // Using constructor with resolved arguments
451 451
                 $this->tracer->push(false, call: "$class::__construct", arguments: $args);
452 452
                 $this->tracer->push(true);
453 453
                 $instance = new $class(...$args);
454
-            } catch (\TypeError $e) {
454
+            }catch (\TypeError $e){
455 455
                 throw new WrongTypeException($constructor, $e);
456
-            } finally {
456
+            }finally{
457 457
                 $this->tracer->pop(true);
458 458
                 $this->tracer->pop(false);
459 459
             }
460
-        } else {
460
+        }else{
461 461
             // No constructor specified
462 462
             $instance = $reflection->newInstance();
463 463
         }
@@ -475,13 +475,13 @@  discard block
 block discarded – undo
475 475
         $instance = $this->runInflector($instance);
476 476
 
477 477
         //Declarative singletons
478
-        if ($this->isSingleton($ctx)) {
478
+        if ($this->isSingleton($ctx)){
479 479
             $this->state->singletons[$ctx->alias] = $instance;
480 480
         }
481 481
 
482 482
         // Register finalizer
483 483
         $finalizer = $this->getFinalizer($ctx, $instance);
484
-        if ($finalizer !== null) {
484
+        if ($finalizer !== null){
485 485
             $this->state->finalizers[] = $finalizer;
486 486
         }
487 487
 
@@ -493,12 +493,12 @@  discard block
 block discarded – undo
493 493
      */
494 494
     private function isSingleton(Ctx $ctx): bool
495 495
     {
496
-        if ($ctx->singleton === true) {
496
+        if ($ctx->singleton === true){
497 497
             return true;
498 498
         }
499 499
 
500 500
         /** @psalm-suppress RedundantCondition https://github.com/vimeo/psalm/issues/9489 */
501
-        if ($ctx->reflection->implementsInterface(SingletonInterface::class)) {
501
+        if ($ctx->reflection->implementsInterface(SingletonInterface::class)){
502 502
             return true;
503 503
         }
504 504
 
@@ -512,7 +512,7 @@  discard block
 block discarded – undo
512 512
          * @var Finalize|null $attribute
513 513
          */
514 514
         $attribute = ($ctx->reflection->getAttributes(Finalize::class)[0] ?? null)?->newInstance();
515
-        if ($attribute === null) {
515
+        if ($attribute === null){
516 516
             return null;
517 517
         }
518 518
 
@@ -526,10 +526,10 @@  discard block
 block discarded – undo
526 526
     {
527 527
         $scope = $this->scope;
528 528
 
529
-        while ($scope !== null) {
530
-            foreach ($this->state->inflectors as $class => $inflectors) {
531
-                if ($instance instanceof $class) {
532
-                    foreach ($inflectors as $inflector) {
529
+        while ($scope !== null){
530
+            foreach ($this->state->inflectors as $class => $inflectors){
531
+                if ($instance instanceof $class){
532
+                    foreach ($inflectors as $inflector){
533 533
                         $instance = $inflector->getParametersCount() > 1
534 534
                             ? $this->invoker->invoke($inflector->inflector, [$instance])
535 535
                             : ($inflector->inflector)($instance);
@@ -545,9 +545,9 @@  discard block
 block discarded – undo
545 545
 
546 546
     private function validateArguments(ContextFunction $reflection, array $arguments = []): bool
547 547
     {
548
-        try {
548
+        try{
549 549
             $this->resolver->validateArguments($reflection, $arguments);
550
-        } catch (\Throwable) {
550
+        }catch (\Throwable){
551 551
             return false;
552 552
         }
553 553
 
Please login to merge, or discard this patch.
Braces   +119 added lines, -51 removed lines patch added patch discarded remove patch
@@ -68,17 +68,20 @@  discard block
 block discarded – undo
68 68
      */
69 69
     public function make(string $alias, array $parameters = [], Stringable|string|null $context = null): mixed
70 70
     {
71
-        if ($parameters === [] && \array_key_exists($alias, $this->state->singletons)) {
71
+        if ($parameters === [] && \array_key_exists($alias, $this->state->singletons))
72
+        {
72 73
             return $this->state->singletons[$alias];
73 74
         }
74 75
 
75 76
         $binding = $this->state->bindings[$alias] ?? null;
76 77
 
77
-        if ($binding === null) {
78
+        if ($binding === null)
79
+        {
78 80
             return $this->resolveWithoutBinding($alias, $parameters, $context);
79 81
         }
80 82
 
81
-        try {
83
+        try
84
+        {
82 85
             $this->tracer->push(
83 86
                 false,
84 87
                 action: 'resolve from binding',
@@ -106,7 +109,9 @@  discard block
 block discarded – undo
106 109
                     ->resolveWeakReference($binding, $alias, $context, $parameters),
107 110
                 default => $binding,
108 111
             };
109
-        } finally {
112
+        }
113
+        finally
114
+        {
110 115
             $this->state->bindings[$alias] ??= $binding;
111 116
             $this->tracer->pop(true);
112 117
             $this->tracer->pop(false);
@@ -120,18 +125,23 @@  discard block
 block discarded – undo
120 125
     private function resolveInjector(Injectable $binding, Ctx $ctx, array $arguments)
121 126
     {
122 127
         $context = $ctx->context;
123
-        try {
128
+        try
129
+        {
124 130
             $reflection = $ctx->reflection ??= new \ReflectionClass($ctx->class);
125
-        } catch (\ReflectionException $e) {
131
+        }
132
+        catch (\ReflectionException $e)
133
+        {
126 134
             throw new ContainerException($e->getMessage(), $e->getCode(), $e);
127 135
         }
128 136
 
129 137
         $injector = $binding->injector;
130 138
 
131
-        try {
139
+        try
140
+        {
132 141
             $injectorInstance = \is_object($injector) ? $injector : $this->container->get($injector);
133 142
 
134
-            if (!$injectorInstance instanceof InjectorInterface) {
143
+            if (!$injectorInstance instanceof InjectorInterface)
144
+            {
135 145
                 throw new InjectionException(
136 146
                     \sprintf(
137 147
                         "Class '%s' must be an instance of InjectorInterface for '%s'.",
@@ -158,7 +168,8 @@  discard block
 block discarded – undo
158 168
                 default => (string)$context,
159 169
             });
160 170
 
161
-            if (!$reflection->isInstance($instance)) {
171
+            if (!$reflection->isInstance($instance))
172
+            {
162 173
                 throw new InjectionException(
163 174
                     \sprintf(
164 175
                         "Invalid injection response for '%s'.",
@@ -168,7 +179,9 @@  discard block
 block discarded – undo
168 179
             }
169 180
 
170 181
             return $instance;
171
-        } finally {
182
+        }
183
+        finally
184
+        {
172 185
             $this->state->bindings[$ctx->class] ??= $binding;
173 186
         }
174 187
     }
@@ -187,7 +200,8 @@  discard block
 block discarded – undo
187 200
             //Binding is pointing to something else
188 201
             : $this->make($binding->alias, $arguments, $context);
189 202
 
190
-        if ($binding->singleton && $arguments === []) {
203
+        if ($binding->singleton && $arguments === [])
204
+        {
191 205
             $this->state->singletons[$alias] = $result;
192 206
         }
193 207
 
@@ -228,11 +242,14 @@  discard block
 block discarded – undo
228 242
         array $arguments,
229 243
     ): mixed {
230 244
         $ctx = new Ctx(alias: $alias, class: $alias, context: $context, singleton: $binding->singleton);
231
-        try {
245
+        try
246
+        {
232 247
             $instance = $binding::class === \Spiral\Core\Config\Factory::class && $binding->getParametersCount() === 0
233 248
                 ? ($binding->factory)()
234 249
                 : $this->invoker->invoke($binding->factory, $arguments);
235
-        } catch (NotCallableException $e) {
250
+        }
251
+        catch (NotCallableException $e)
252
+        {
236 253
             throw new ContainerException(
237 254
                 $this->tracer->combineTraceMessage(\sprintf('Invalid binding for `%s`.', $ctx->alias)),
238 255
                 $e->getCode(),
@@ -251,19 +268,24 @@  discard block
 block discarded – undo
251 268
     ): ?object {
252 269
         $avoidCache = $arguments !== [];
253 270
 
254
-        if (($avoidCache || $binding->reference->get() === null) && \class_exists($alias)) {
255
-            try {
271
+        if (($avoidCache || $binding->reference->get() === null) && \class_exists($alias))
272
+        {
273
+            try
274
+            {
256 275
                 $this->tracer->push(false, alias: $alias, source: WeakReference::class, context: $context);
257 276
 
258 277
                 $object = $this->createInstance(
259 278
                     new Ctx(alias: $alias, class: $alias, context: $context),
260 279
                     $arguments,
261 280
                 );
262
-                if ($avoidCache) {
281
+                if ($avoidCache)
282
+                {
263 283
                     return $object;
264 284
                 }
265 285
                 $binding->reference = WeakReference::create($object);
266
-            } catch (\Throwable) {
286
+            }
287
+            catch (\Throwable)
288
+            {
267 289
                 throw new ContainerException(
268 290
                     $this->tracer->combineTraceMessage(
269 291
                         \sprintf(
@@ -273,7 +295,9 @@  discard block
 block discarded – undo
273 295
                         )
274 296
                     )
275 297
                 );
276
-            } finally {
298
+            }
299
+            finally
300
+            {
277 301
                 $this->tracer->pop();
278 302
             }
279 303
         }
@@ -288,18 +312,25 @@  discard block
 block discarded – undo
288 312
     ): mixed {
289 313
         $parent = $this->scope->getParent();
290 314
 
291
-        if ($parent !== null) {
292
-            try {
315
+        if ($parent !== null)
316
+        {
317
+            try
318
+            {
293 319
                 $this->tracer->push(false, ...[
294 320
                     'current scope' => $this->scope->getScopeName(),
295 321
                     'jump to parent scope' => $this->scope->getParentScope()->getScopeName(),
296 322
                 ]);
297 323
                 return $parent->make($alias, $parameters, $context);
298
-            } catch (BadScopeException $e) {
299
-                if ($this->scope->getScopeName() !== $e->getScope()) {
324
+            }
325
+            catch (BadScopeException $e)
326
+            {
327
+                if ($this->scope->getScopeName() !== $e->getScope())
328
+                {
300 329
                     throw $e;
301 330
                 }
302
-            } catch (ContainerExceptionInterface $e) {
331
+            }
332
+            catch (ContainerExceptionInterface $e)
333
+            {
303 334
                 $className = match (true) {
304 335
                     $e instanceof NotFoundException => NotFoundException::class,
305 336
                     default => ContainerException::class,
@@ -308,19 +339,24 @@  discard block
 block discarded – undo
308 339
                     'Can\'t resolve `%s`.',
309 340
                     $alias,
310 341
                 )), previous: $e);
311
-            } finally {
342
+            }
343
+            finally
344
+            {
312 345
                 $this->tracer->pop(false);
313 346
             }
314 347
         }
315 348
 
316 349
         $this->tracer->push(false, action: 'autowire', alias: $alias, context: $context);
317
-        try {
350
+        try
351
+        {
318 352
             //No direct instructions how to construct class, make is automatically
319 353
             return $this->autowire(
320 354
                 new Ctx(alias: $alias, class: $alias, context: $context),
321 355
                 $parameters,
322 356
             );
323
-        } finally {
357
+        }
358
+        finally
359
+        {
324 360
             $this->tracer->pop(false);
325 361
         }
326 362
     }
@@ -370,7 +406,8 @@  discard block
 block discarded – undo
370 406
         // Check scope name
371 407
         $ctx->reflection = new \ReflectionClass($instance);
372 408
         $scopeName = ($ctx->reflection->getAttributes(ScopeAttribute::class)[0] ?? null)?->newInstance()->name;
373
-        if ($scopeName !== null && $scopeName !== $this->scope->getScopeName()) {
409
+        if ($scopeName !== null && $scopeName !== $this->scope->getScopeName())
410
+        {
374 411
             throw new BadScopeException($scopeName, $instance::class);
375 412
         }
376 413
 
@@ -397,24 +434,30 @@  discard block
 block discarded – undo
397 434
         array $arguments,
398 435
     ): object {
399 436
         $class = $ctx->class;
400
-        try {
437
+        try
438
+        {
401 439
             $ctx->reflection = $reflection = new \ReflectionClass($class);
402
-        } catch (\ReflectionException $e) {
440
+        }
441
+        catch (\ReflectionException $e)
442
+        {
403 443
             throw new ContainerException($e->getMessage(), $e->getCode(), $e);
404 444
         }
405 445
 
406 446
         // Check scope name
407 447
         $scope = ($reflection->getAttributes(ScopeAttribute::class)[0] ?? null)?->newInstance()->name;
408
-        if ($scope !== null && $scope !== $this->scope->getScopeName()) {
448
+        if ($scope !== null && $scope !== $this->scope->getScopeName())
449
+        {
409 450
             throw new BadScopeException($scope, $class);
410 451
         }
411 452
 
412 453
         // We have to construct class using external injector when we know the exact context
413
-        if ($arguments === [] && $this->binder->hasInjector($class)) {
454
+        if ($arguments === [] && $this->binder->hasInjector($class))
455
+        {
414 456
             return $this->resolveInjector($this->state->bindings[$ctx->class], $ctx, $arguments);
415 457
         }
416 458
 
417
-        if (!$reflection->isInstantiable()) {
459
+        if (!$reflection->isInstantiable())
460
+        {
418 461
             $itIs = match (true) {
419 462
                 $reflection->isEnum() => 'Enum',
420 463
                 $reflection->isAbstract() => 'Abstract class',
@@ -427,12 +470,16 @@  discard block
 block discarded – undo
427 470
 
428 471
         $constructor = $reflection->getConstructor();
429 472
 
430
-        if ($constructor !== null) {
431
-            try {
473
+        if ($constructor !== null)
474
+        {
475
+            try
476
+            {
432 477
                 $this->tracer->push(false, action: 'resolve arguments', signature: $constructor);
433 478
                 $this->tracer->push(true);
434 479
                 $args = $this->resolver->resolveArguments($constructor, $arguments);
435
-            } catch (ValidationException $e) {
480
+            }
481
+            catch (ValidationException $e)
482
+            {
436 483
                 throw new ContainerException(
437 484
                     $this->tracer->combineTraceMessage(
438 485
                         \sprintf(
@@ -442,22 +489,31 @@  discard block
 block discarded – undo
442 489
                         )
443 490
                     ),
444 491
                 );
445
-            } finally {
492
+            }
493
+            finally
494
+            {
446 495
                 $this->tracer->pop(true);
447 496
                 $this->tracer->pop(false);
448 497
             }
449
-            try {
498
+            try
499
+            {
450 500
                 // Using constructor with resolved arguments
451 501
                 $this->tracer->push(false, call: "$class::__construct", arguments: $args);
452 502
                 $this->tracer->push(true);
453 503
                 $instance = new $class(...$args);
454
-            } catch (\TypeError $e) {
504
+            }
505
+            catch (\TypeError $e)
506
+            {
455 507
                 throw new WrongTypeException($constructor, $e);
456
-            } finally {
508
+            }
509
+            finally
510
+            {
457 511
                 $this->tracer->pop(true);
458 512
                 $this->tracer->pop(false);
459 513
             }
460
-        } else {
514
+        }
515
+        else
516
+        {
461 517
             // No constructor specified
462 518
             $instance = $reflection->newInstance();
463 519
         }
@@ -475,13 +531,15 @@  discard block
 block discarded – undo
475 531
         $instance = $this->runInflector($instance);
476 532
 
477 533
         //Declarative singletons
478
-        if ($this->isSingleton($ctx)) {
534
+        if ($this->isSingleton($ctx))
535
+        {
479 536
             $this->state->singletons[$ctx->alias] = $instance;
480 537
         }
481 538
 
482 539
         // Register finalizer
483 540
         $finalizer = $this->getFinalizer($ctx, $instance);
484
-        if ($finalizer !== null) {
541
+        if ($finalizer !== null)
542
+        {
485 543
             $this->state->finalizers[] = $finalizer;
486 544
         }
487 545
 
@@ -493,12 +551,14 @@  discard block
 block discarded – undo
493 551
      */
494 552
     private function isSingleton(Ctx $ctx): bool
495 553
     {
496
-        if ($ctx->singleton === true) {
554
+        if ($ctx->singleton === true)
555
+        {
497 556
             return true;
498 557
         }
499 558
 
500 559
         /** @psalm-suppress RedundantCondition https://github.com/vimeo/psalm/issues/9489 */
501
-        if ($ctx->reflection->implementsInterface(SingletonInterface::class)) {
560
+        if ($ctx->reflection->implementsInterface(SingletonInterface::class))
561
+        {
502 562
             return true;
503 563
         }
504 564
 
@@ -512,7 +572,8 @@  discard block
 block discarded – undo
512 572
          * @var Finalize|null $attribute
513 573
          */
514 574
         $attribute = ($ctx->reflection->getAttributes(Finalize::class)[0] ?? null)?->newInstance();
515
-        if ($attribute === null) {
575
+        if ($attribute === null)
576
+        {
516 577
             return null;
517 578
         }
518 579
 
@@ -526,10 +587,14 @@  discard block
 block discarded – undo
526 587
     {
527 588
         $scope = $this->scope;
528 589
 
529
-        while ($scope !== null) {
530
-            foreach ($this->state->inflectors as $class => $inflectors) {
531
-                if ($instance instanceof $class) {
532
-                    foreach ($inflectors as $inflector) {
590
+        while ($scope !== null)
591
+        {
592
+            foreach ($this->state->inflectors as $class => $inflectors)
593
+            {
594
+                if ($instance instanceof $class)
595
+                {
596
+                    foreach ($inflectors as $inflector)
597
+                    {
533 598
                         $instance = $inflector->getParametersCount() > 1
534 599
                             ? $this->invoker->invoke($inflector->inflector, [$instance])
535 600
                             : ($inflector->inflector)($instance);
@@ -545,9 +610,12 @@  discard block
 block discarded – undo
545 610
 
546 611
     private function validateArguments(ContextFunction $reflection, array $arguments = []): bool
547 612
     {
548
-        try {
613
+        try
614
+        {
549 615
             $this->resolver->validateArguments($reflection, $arguments);
550
-        } catch (\Throwable) {
616
+        }
617
+        catch (\Throwable)
618
+        {
551 619
             return false;
552 620
         }
553 621
 
Please login to merge, or discard this patch.