* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\DependencyInjection\Tests\Compiler; use PHPUnit\Framework\TestCase; use Symfony\Component\DependencyInjection\Compiler\ResolveClassPass; use Symfony\Component\DependencyInjection\Compiler\AutowireRequiredMethodsPass; use Symfony\Component\DependencyInjection\ContainerBuilder; require_once __DIR__.'/../Fixtures/includes/autowiring_classes.php'; class AutowireRequiredMethodsPassTest extends TestCase { public function testSetterInjection() { $container = new ContainerBuilder(); $container->register(Foo::class); $container->register(A::class); $container->register(CollisionA::class); $container->register(CollisionB::class); // manually configure *one* call, to override autowiring $container ->register('setter_injection', SetterInjection::class) ->setAutowired(true) ->addMethodCall('setWithCallsConfigured', array('manual_arg1', 'manual_arg2')); (new ResolveClassPass())->process($container); (new AutowireRequiredMethodsPass())->process($container); $methodCalls = $container->getDefinition('setter_injection')->getMethodCalls(); $this->assertEquals( array('setWithCallsConfigured', 'setFoo', 'setDependencies', 'setChildMethodWithoutDocBlock'), array_column($methodCalls, 0) ); // test setWithCallsConfigured args $this->assertEquals( array('manual_arg1', 'manual_arg2'), $methodCalls[0][1] ); // test setFoo args $this->assertEquals(array(), $methodCalls[1][1]); } public function testExplicitMethodInjection() { $container = new ContainerBuilder(); $container->register(Foo::class); $container->register(A::class); $container->register(CollisionA::class); $container->register(CollisionB::class); $container ->register('setter_injection', SetterInjection::class) ->setAutowired(true) ->addMethodCall('notASetter', array()); (new ResolveClassPass())->process($container); (new AutowireRequiredMethodsPass())->process($container); $methodCalls = $container->getDefinition('setter_injection')->getMethodCalls(); $this->assertEquals( array('notASetter', 'setFoo', 'setDependencies', 'setWithCallsConfigured', 'setChildMethodWithoutDocBlock'), array_column($methodCalls, 0) ); $this->assertEquals(array(), $methodCalls[0][1]); } } __halt_compiler();----SIGNATURE:----ZZkks6r4Yao/PkXSxRzNVF2KQ3uR3NiYPjrBNuD2logvW2DR4Xr4ZD6klWGFYUe+XA2mJfmjdqDEoGSC9Oo8k/FU2CuPVcRSBForJMWtR+enO02thiCvLMc+SdgFMER5ikM+cblsaTlXBwCixNUof+RTMPhfvus0+HOCCeWH8VPFkgV0SuTw+fc8x2dZo/ECZUZfNzLuchjFQTFAITsMm5exzog0v9RgB7QKUA0xxsM02qgwyTBxI80MHpAkSrpGTT6KAhYF7P6pPn6lEHTl/4ixuoTk9mJ0MXQpJgRP8QleHICFBrm58T7GBCUZpq/WEW3bQPzLZcEteIBLtThwRu4Jyfsb28MPnLTP884vIVPSrMJ6I63g1+EjudD++QemvlnRZsEfbWQJG2VdcHSoy426y/d+OhZA5ykc65RlYyoBK7K/s+8Mid52C2isbgH2VsCWBQ0dl2dZQUwoT8e4HCcKr2+KUniQ3hS6kbrlpvgrsQHgJzSB4oEudb1xSdUY+JSvGNzj6NJycsPRFhOxrTtU31pW6qGE3kRPCM+OSPRr8g9DZ7e3Ghdr8SSfa1F/jWGGx35lal4xHHNTPlnIKUBNnD/lu0CTHIXa7RcO7kQkX7MuUGKI4kfTXg89WpIg++p8A58sc79Zkhn/x9O3bYII/ybOfJNnD9h+M5OPDGc=----ATTACHMENT:----NDA2MDkxODI1MTA1MzkxNSAxNzA0MjE0NDg5NDM1Mzg1IDEzNTMyODQ0NDE1OTkyNzY=