* * 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\AnalyzeServiceReferencesPass; use Symfony\Component\DependencyInjection\Compiler\RepeatedPass; use Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass; use Symfony\Component\DependencyInjection\Compiler\ResolveParameterPlaceHoldersPass; use Symfony\Component\DependencyInjection\Definition; use Symfony\Component\DependencyInjection\Reference; use Symfony\Component\DependencyInjection\ContainerBuilder; class RemoveUnusedDefinitionsPassTest extends TestCase { public function testProcess() { $container = new ContainerBuilder(); $container ->register('foo') ->setPublic(false) ; $container ->register('bar') ->setPublic(false) ; $container ->register('moo') ->setArguments(array(new Reference('bar'))) ; $this->process($container); $this->assertFalse($container->hasDefinition('foo')); $this->assertTrue($container->hasDefinition('bar')); $this->assertTrue($container->hasDefinition('moo')); } public function testProcessRemovesUnusedDefinitionsRecursively() { $container = new ContainerBuilder(); $container ->register('foo') ->setPublic(false) ; $container ->register('bar') ->setArguments(array(new Reference('foo'))) ->setPublic(false) ; $this->process($container); $this->assertFalse($container->hasDefinition('foo')); $this->assertFalse($container->hasDefinition('bar')); } public function testProcessWorksWithInlinedDefinitions() { $container = new ContainerBuilder(); $container ->register('foo') ->setPublic(false) ; $container ->register('bar') ->setArguments(array(new Definition(null, array(new Reference('foo'))))) ; $this->process($container); $this->assertTrue($container->hasDefinition('foo')); $this->assertTrue($container->hasDefinition('bar')); } public function testProcessWontRemovePrivateFactory() { $container = new ContainerBuilder(); $container ->register('foo', 'stdClass') ->setFactory(array('stdClass', 'getInstance')) ->setPublic(false); $container ->register('bar', 'stdClass') ->setFactory(array(new Reference('foo'), 'getInstance')) ->setPublic(false); $container ->register('foobar') ->addArgument(new Reference('bar')); $this->process($container); $this->assertTrue($container->hasDefinition('foo')); $this->assertTrue($container->hasDefinition('bar')); $this->assertTrue($container->hasDefinition('foobar')); } public function testProcessConsiderEnvVariablesAsUsedEvenInPrivateServices() { $container = new ContainerBuilder(); $container->setParameter('env(FOOBAR)', 'test'); $container ->register('foo') ->setArguments(array('%env(FOOBAR)%')) ->setPublic(false) ; $resolvePass = new ResolveParameterPlaceHoldersPass(); $resolvePass->process($container); $this->process($container); $this->assertFalse($container->hasDefinition('foo')); $envCounters = $container->getEnvCounters(); $this->assertArrayHasKey('FOOBAR', $envCounters); $this->assertSame(1, $envCounters['FOOBAR']); } protected function process(ContainerBuilder $container) { $repeatedPass = new RepeatedPass(array(new AnalyzeServiceReferencesPass(), new RemoveUnusedDefinitionsPass())); $repeatedPass->process($container); } } __halt_compiler();----SIGNATURE:----BfhbFCHCExpY2v1zZhNFoNVEE5+YsW+xvHUb/4bXl22I4B8tUKZrjP8L4+WPfArAxvJA/errP/X9Ccx2yIgzmH2mEVfENYGYB8D94TQq7Td3uKs5ChLV63ivQ6TR5EZlNSbGULD8eeoXDP1v5VCaE6jRsiSj4FyYIQaSg33ElLFRy35b1/3bjC/rUGP0dcYw/EOtuTM/X3qXEr8H4t5/0CnzgqHGw14AyWEs07qlIxqr9vgh/gfbzy7x1PfSAK9WU3GqWAYMkmApmoCsINQOOxobtKlKLB26LwFUPbxzqTfV2dF0pjcVuVv3+QgYcYAa+mUTk7Z4Y80OqcFlcD1vuI+K+19aZsZyRq9pP7u0oi8dIKgt2FscXoIAJdL8RB2Nj1CwYomcx+pPeZbO5zKOpvFxsP9NS0Ag/mQ8KqOsFvA/cPwvTukyVlAqhIfa1L2WDm2RNTYzZNVh5zaILseUXXEmJzCm1WUJqDwtKUgJmWe+t/3K6VqjY5BI/oWHIVt2ru0zn9TSp7VvR0jPpFBCtHgEXNGVn8p76lhZDUfO24BRpGcXcmbgX5pTe2Iu2lZK4BNJUkLnhuUCXb65uC0sOAORS4UaqZctqmCCuDOz8RCB/lwAvKPvdWfbvVBIPEzQpkLIkYMufmXtaRzUPtXwMSHBOmtN64r7AlTUJfX391Q=----ATTACHMENT:----ODU2MDQyMjYwNDA2NDE0NSAyODQwMTMzMTQ2MjIyNzU0IDkzNjIzNzQ1MTkxODM1MTc=