Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 16a8676

Browse files
committed
Added deprecation of aliases to the yaml file loader
1 parent 34ce7bf commit 16a8676

File tree

3 files changed

+21
-1
lines changed

3 files changed

+21
-1
lines changed

src/Symfony/Component/DependencyInjection/Loader/YamlFileLoader.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -346,8 +346,13 @@ private function parseDefinition($id, $service, $file, array $defaults)
346346
}
347347

348348
foreach ($service as $key => $value) {
349-
if (!in_array($key, array('alias', 'public'))) {
349+
if (!in_array($key, array('alias', 'public', 'deprecated'))) {
350350
throw new InvalidArgumentException(sprintf('The configuration key "%s" is unsupported for the service "%s" which is defined as an alias in "%s". Allowed configuration keys for service aliases are "alias" and "public".', $key, $id, $file));
351+
continue;
352+
}
353+
354+
if ('deprecated' === $key) {
355+
$alias->setDeprecated(true, $value);
351356
}
352357
}
353358

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
services:
2+
alias_for_foobar:
3+
alias: foobar
4+
deprecated: The "%service_id%" service alias is deprecated.

src/Symfony/Component/DependencyInjection/Tests/Loader/YamlFileLoaderTest.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,17 @@ public function testLoadServices()
174174
$this->assertEquals(array('decorated', 'decorated.pif-pouf', 5), $services['decorator_service_with_name_and_priority']->getDecoratedService());
175175
}
176176

177+
public function testDeprecatedAliases()
178+
{
179+
$container = new ContainerBuilder();
180+
$loader = new YamlFileLoader($container, new FileLocator(self::$fixturesPath.'/yaml'));
181+
$loader->load('deprecated_alias_definitions.yml');
182+
183+
$this->assertTrue($container->getAlias('alias_for_foobar')->isDeprecated());
184+
$message = 'The "alias_for_foobar" service alias is deprecated.';
185+
$this->assertSame($message, $container->getAlias('alias_for_foobar')->getDeprecationMessage('alias_for_foobar'));
186+
}
187+
177188
public function testLoadFactoryShortSyntax()
178189
{
179190
$container = new ContainerBuilder();

0 commit comments

Comments
 (0)