Skip to content

Commit 6ceac62

Browse files
committed
replace DefinitionDecorator with ChildDefinition
The DefinitionDecorator class does not deal with decorated services. It reflects a parent-child-relationship between definitions instead. To avoid confusion, this commit deprecates the existing DefinitionDecorator class and introduces a new ChildDefinition class as replacement.
1 parent af1997c commit 6ceac62

File tree

5 files changed

+18
-18
lines changed

5 files changed

+18
-18
lines changed

DependencyInjection/Compiler/CachePoolPass.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@
1212
namespace Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler;
1313

1414
use Symfony\Component\Cache\Adapter\RedisAdapter;
15+
use Symfony\Component\DependencyInjection\ChildDefinition;
1516
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
1617
use Symfony\Component\DependencyInjection\ContainerBuilder;
1718
use Symfony\Component\DependencyInjection\Definition;
18-
use Symfony\Component\DependencyInjection\DefinitionDecorator;
1919
use Symfony\Component\DependencyInjection\Reference;
2020
use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
2121

@@ -48,7 +48,7 @@ public function process(ContainerBuilder $container)
4848
continue;
4949
}
5050
$isLazy = $pool->isLazy();
51-
while ($adapter instanceof DefinitionDecorator) {
51+
while ($adapter instanceof ChildDefinition) {
5252
$adapter = $container->findDefinition($adapter->getParent());
5353
$isLazy = $isLazy || $adapter->isLazy();
5454
if ($t = $adapter->getTag('cache.pool')) {

DependencyInjection/FrameworkExtension.php

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@
1515
use Symfony\Bridge\Monolog\Processor\DebugProcessor;
1616
use Symfony\Component\Cache\Adapter\AdapterInterface;
1717
use Symfony\Component\DependencyInjection\Alias;
18+
use Symfony\Component\DependencyInjection\ChildDefinition;
1819
use Symfony\Component\DependencyInjection\ContainerBuilder;
1920
use Symfony\Component\DependencyInjection\ContainerInterface;
2021
use Symfony\Component\DependencyInjection\Definition;
21-
use Symfony\Component\DependencyInjection\DefinitionDecorator;
2222
use Symfony\Component\DependencyInjection\Exception\LogicException;
2323
use Symfony\Component\DependencyInjection\Reference;
2424
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
@@ -436,7 +436,7 @@ private function registerWorkflowConfiguration(array $workflows, ContainerBuilde
436436

437437
// Create MarkingStore
438438
if (isset($workflow['marking_store']['type'])) {
439-
$markingStoreDefinition = new DefinitionDecorator('workflow.marking_store.'.$workflow['marking_store']['type']);
439+
$markingStoreDefinition = new ChildDefinition('workflow.marking_store.'.$workflow['marking_store']['type']);
440440
foreach ($workflow['marking_store']['arguments'] as $argument) {
441441
$markingStoreDefinition->addArgument($argument);
442442
}
@@ -445,7 +445,7 @@ private function registerWorkflowConfiguration(array $workflows, ContainerBuilde
445445
}
446446

447447
// Create Workflow
448-
$workflowDefinition = new DefinitionDecorator(sprintf('%s.abstract', $type));
448+
$workflowDefinition = new ChildDefinition(sprintf('%s.abstract', $type));
449449
$workflowDefinition->replaceArgument(0, $definitionDefinition);
450450
if (isset($markingStoreDefinition)) {
451451
$workflowDefinition->replaceArgument(1, $markingStoreDefinition);
@@ -762,7 +762,7 @@ private function createPackageDefinition($basePath, array $baseUrls, Reference $
762762
}
763763

764764
if (!$baseUrls) {
765-
$package = new DefinitionDecorator('assets.path_package');
765+
$package = new ChildDefinition('assets.path_package');
766766

767767
return $package
768768
->setPublic(false)
@@ -771,7 +771,7 @@ private function createPackageDefinition($basePath, array $baseUrls, Reference $
771771
;
772772
}
773773

774-
$package = new DefinitionDecorator('assets.url_package');
774+
$package = new ChildDefinition('assets.url_package');
775775

776776
return $package
777777
->setPublic(false)
@@ -786,7 +786,7 @@ private function createVersion(ContainerBuilder $container, $version, $format, $
786786
return new Reference('assets.empty_version_strategy');
787787
}
788788

789-
$def = new DefinitionDecorator('assets.static_version_strategy');
789+
$def = new ChildDefinition('assets.static_version_strategy');
790790
$def
791791
->replaceArgument(0, $version)
792792
->replaceArgument(1, $format)
@@ -1253,7 +1253,7 @@ private function registerCacheConfiguration(array $config, ContainerBuilder $con
12531253
);
12541254
}
12551255
foreach ($config['pools'] as $name => $pool) {
1256-
$definition = new DefinitionDecorator($pool['adapter']);
1256+
$definition = new ChildDefinition($pool['adapter']);
12571257
$definition->setPublic($pool['public']);
12581258
unset($pool['adapter'], $pool['public']);
12591259

Tests/DependencyInjection/Compiler/CachePoolPassTest.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@
1212
namespace Symfony\Bundle\FrameworkBundle\Tests\DependencyInjection\Compiler;
1313

1414
use Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\CachePoolPass;
15+
use Symfony\Component\DependencyInjection\ChildDefinition;
1516
use Symfony\Component\DependencyInjection\ContainerBuilder;
1617
use Symfony\Component\DependencyInjection\Definition;
17-
use Symfony\Component\DependencyInjection\DefinitionDecorator;
1818
use Symfony\Component\DependencyInjection\Reference;
1919

2020
class CachePoolPassTest extends \PHPUnit_Framework_TestCase
@@ -38,7 +38,7 @@ public function testNamespaceArgumentIsReplaced()
3838
$adapter->addTag('cache.pool');
3939
$container->setDefinition('app.cache_adapter', $adapter);
4040
$container->setAlias('app.cache_adapter_alias', 'app.cache_adapter');
41-
$cachePool = new DefinitionDecorator('app.cache_adapter_alias');
41+
$cachePool = new ChildDefinition('app.cache_adapter_alias');
4242
$cachePool->addArgument(null);
4343
$cachePool->addTag('cache.pool');
4444
$container->setDefinition('app.cache_pool', $cachePool);
@@ -88,7 +88,7 @@ public function testThrowsExceptionWhenCachePoolTagHasUnknownAttributes()
8888
$adapter->setAbstract(true);
8989
$adapter->addTag('cache.pool');
9090
$container->setDefinition('app.cache_adapter', $adapter);
91-
$cachePool = new DefinitionDecorator('app.cache_adapter');
91+
$cachePool = new ChildDefinition('app.cache_adapter');
9292
$cachePool->addTag('cache.pool', array('foobar' => 123));
9393
$container->setDefinition('app.cache_pool', $cachePool);
9494

Tests/DependencyInjection/FrameworkExtensionTest.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919
use Symfony\Component\Cache\Adapter\FilesystemAdapter;
2020
use Symfony\Component\Cache\Adapter\ProxyAdapter;
2121
use Symfony\Component\Cache\Adapter\RedisAdapter;
22+
use Symfony\Component\DependencyInjection\ChildDefinition;
2223
use Symfony\Component\DependencyInjection\ContainerBuilder;
23-
use Symfony\Component\DependencyInjection\DefinitionDecorator;
2424
use Symfony\Component\DependencyInjection\Loader\ClosureLoader;
2525
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBag;
2626
use Symfony\Component\DependencyInjection\Reference;
@@ -754,14 +754,14 @@ protected function createContainerFromClosure($closure, $data = array())
754754
return $container;
755755
}
756756

757-
private function assertPathPackage(ContainerBuilder $container, DefinitionDecorator $package, $basePath, $version, $format)
757+
private function assertPathPackage(ContainerBuilder $container, ChildDefinition $package, $basePath, $version, $format)
758758
{
759759
$this->assertEquals('assets.path_package', $package->getParent());
760760
$this->assertEquals($basePath, $package->getArgument(0));
761761
$this->assertVersionStrategy($container, $package->getArgument(1), $version, $format);
762762
}
763763

764-
private function assertUrlPackage(ContainerBuilder $container, DefinitionDecorator $package, $baseUrls, $version, $format)
764+
private function assertUrlPackage(ContainerBuilder $container, ChildDefinition $package, $baseUrls, $version, $format)
765765
{
766766
$this->assertEquals('assets.url_package', $package->getParent());
767767
$this->assertEquals($baseUrls, $package->getArgument(0));
@@ -786,7 +786,7 @@ private function assertCachePoolServiceDefinitionIsCreated(ContainerBuilder $con
786786

787787
$poolDefinition = $container->getDefinition($id);
788788

789-
$this->assertInstanceOf(DefinitionDecorator::class, $poolDefinition, sprintf('Cache pool "%s" is based on an abstract cache pool.', $id));
789+
$this->assertInstanceOf(ChildDefinition::class, $poolDefinition, sprintf('Cache pool "%s" is based on an abstract cache pool.', $id));
790790

791791
$this->assertTrue($poolDefinition->hasTag('cache.pool'), sprintf('Service definition "%s" is tagged with the "cache.pool" tag.', $id));
792792
$this->assertFalse($poolDefinition->isAbstract(), sprintf('Service definition "%s" is not abstract.', $id));
@@ -799,7 +799,7 @@ private function assertCachePoolServiceDefinitionIsCreated(ContainerBuilder $con
799799
do {
800800
$parentId = $parentDefinition->getParent();
801801
$parentDefinition = $container->findDefinition($parentId);
802-
} while ($parentDefinition instanceof DefinitionDecorator);
802+
} while ($parentDefinition instanceof ChildDefinition);
803803

804804
switch ($adapter) {
805805
case 'cache.adapter.apcu':

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
"php": ">=5.5.9",
2020
"symfony/cache": "~3.2",
2121
"symfony/class-loader": "~3.2",
22-
"symfony/dependency-injection": "~3.2",
22+
"symfony/dependency-injection": "~3.3",
2323
"symfony/config": "~2.8|~3.0",
2424
"symfony/event-dispatcher": "~2.8|~3.0",
2525
"symfony/http-foundation": "~3.1",

0 commit comments

Comments
 (0)