88use Psr \Container \ContainerInterface ;
99use Technically \CallableReflection \CallableReflection ;
1010use Technically \CallableReflection \Parameters \ParameterReflection ;
11+ use Technically \DependencyResolver \Contracts \DependencyResolver as DependencyResolverInterface ;
1112use Technically \DependencyResolver \Exceptions \CannotAutowireArgument ;
1213use Technically \DependencyResolver \Exceptions \CannotAutowireDependencyArgument ;
1314use Technically \DependencyResolver \Exceptions \ClassCannotBeInstantiated ;
1415use Technically \DependencyResolver \Exceptions \DependencyResolutionException ;
1516use Technically \NullContainer \NullContainer ;
1617
17- final class DependencyResolver
18+ final class DependencyResolver implements DependencyResolverInterface
1819{
1920 private ContainerInterface $ container ;
2021
@@ -24,7 +25,7 @@ public function __construct(?ContainerInterface $container = null)
2425 }
2526
2627 /**
27- * @param string $className
28+ * @param class- string $className
2829 * @return mixed
2930 *
3031 * @throws InvalidArgumentException If class does not exist.
@@ -46,8 +47,8 @@ public function resolve(string $className): mixed
4647 }
4748
4849 /**
49- * @param string $className
50- * @param array $bindings
50+ * @param class- string $className
51+ * @param array<string,mixed> $bindings
5152 * @return mixed
5253 *
5354 * @throws ClassCannotBeInstantiated
@@ -75,9 +76,10 @@ public function construct(string $className, array $bindings = []): mixed
7576 }
7677
7778 /**
78- * @param callable $callable
79- * @param array $bindings
80- * @return mixed
79+ * @template T
80+ * @param callable():T $callable
81+ * @param array<string,mixed> $bindings
82+ * @return T
8183 *
8284 * @throws ArgumentCountError
8385 * @throws CannotAutowireArgument
@@ -93,7 +95,7 @@ public function call(callable $callable, array $bindings = []): mixed
9395
9496 /**
9597 * @param ParameterReflection[] $parameters
96- * @param array $bindings
98+ * @param array<string,mixed> $bindings
9799 * @return array
98100 *
99101 * @throws CannotAutowireArgument
0 commit comments