diff --git a/src/Annotation/OverrideConstructor.php b/src/Annotation/OverrideConstructor.php index 1cef98b..902bbd0 100644 --- a/src/Annotation/OverrideConstructor.php +++ b/src/Annotation/OverrideConstructor.php @@ -5,6 +5,7 @@ use Attribute; use Psr\Container\ContainerInterface; use ReflectionMethod; +use ReflectionParameter; /** * @Annotation @@ -22,7 +23,19 @@ public function getArguments(mixed $object, ContainerInterface $container): arra $method = new ReflectionMethod($object, $this->method); return array_map( - static fn ($parameter) => $container->get($parameter->getType()?->getName()), + static function (ReflectionParameter $parameter) use ($container) { + if (!$container->has($parameter->getType()?->getName())) { + if ($parameter->isDefaultValueAvailable()) { + return $parameter->getDefaultValue(); + } + + if ($parameter->allowsNull()) { + return null; + } + } + + return $container->get($parameter->getType()?->getName()); + }, $method->getParameters() ); }