Skip to content

Commit 7cf2ce4

Browse files
committed
Use Respect\Parameter instead of Reflection
1 parent 48e1fe2 commit 7cf2ce4

File tree

2 files changed

+9
-22
lines changed

2 files changed

+9
-22
lines changed

composer.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@
1919
},
2020
"require": {
2121
"php": ">=8.5",
22-
"psr/container": "^2.0"
22+
"psr/container": "^2.0",
23+
"respect/parameter": "^1.0"
2324
},
2425
"require-dev": {
2526
"mikey179/vfsstream": "^1.6",

src/Autowire.php

Lines changed: 7 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,7 @@
55
namespace Respect\Config;
66

77
use Psr\Container\ContainerInterface;
8-
use ReflectionNamedType;
9-
10-
use function array_key_exists;
8+
use Respect\Parameter\Resolver;
119

1210
class Autowire extends Instantiator
1311
{
@@ -24,28 +22,16 @@ protected function cleanupParams(array $params, bool $forConstructor = true): ar
2422
$constructor = $this->reflection()->getConstructor();
2523
$container = $this->container;
2624
if ($forConstructor && $constructor && $container) {
27-
foreach ($constructor->getParameters() as $param) {
28-
$name = $param->getName();
29-
if (array_key_exists($name, $this->params)) {
30-
$value = $params[$name] ?? null;
31-
if ($value instanceof Ref) {
32-
$params[$name] = $container->get($value->id);
33-
} else {
34-
$this->propagateContainer($value);
35-
$params[$name] = $this->lazyLoad($value);
36-
}
25+
foreach ($params as $name => $value) {
26+
if ($value instanceof Ref) {
27+
$params[$name] = $container->get($value->id);
3728
} else {
38-
$type = $param->getType();
39-
if (
40-
$type instanceof ReflectionNamedType && !$type->isBuiltin()
41-
&& $container->has($type->getName())
42-
) {
43-
$params[$name] = $container->get($type->getName());
44-
}
29+
$this->propagateContainer($value);
30+
$params[$name] = $this->lazyLoad($value);
4531
}
4632
}
4733

48-
return $this->stripTrailingNulls($params);
34+
return $this->stripTrailingNulls((new Resolver($container))->resolveNamed($constructor, $params));
4935
}
5036

5137
return parent::cleanupParams($params);

0 commit comments

Comments
 (0)