Allow passing object instances regardless of the parameter name to method injection (#24234)
This commit is contained in:
parent
de7455a7e0
commit
49549b73dc
|
@ -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()) {
|
||||
|
|
|
@ -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...
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue