Allow passing object instances regardless of the parameter name to method injection (#24234)

This commit is contained in:
Marcel Pociot 2018-05-24 15:16:56 +02:00 committed by Taylor Otwell
parent de7455a7e0
commit 49549b73dc
2 changed files with 12 additions and 0 deletions

View File

@ -152,6 +152,10 @@ class BoundMethod
$dependencies[] = $parameters[$parameter->name];
unset($parameters[$parameter->name]);
} elseif ($parameter->getClass() && array_key_exists($parameter->getClass()->name, $parameters)) {
$dependencies[] = $parameters[$parameter->getClass()->name];
unset($parameters[$parameter->getClass()->name]);
} elseif ($parameter->getClass()) {
$dependencies[] = $container->make($parameter->getClass()->name);
} elseif ($parameter->isDefaultValueAvailable()) {

View File

@ -490,6 +490,14 @@ class ContainerTest extends TestCase
$this->assertInstanceOf('stdClass', $result[0]);
$this->assertEquals('taylor', $result[1]);
$stub = new ContainerConcreteStub;
$result = $container->call(function (stdClass $foo, ContainerConcreteStub $bar) {
return func_get_args();
}, [ContainerConcreteStub::class => $stub]);
$this->assertInstanceOf('stdClass', $result[0]);
$this->assertSame($stub, $result[1]);
/*
* Wrap a function...
*/