Skip to content

Commit c6e9e01

Browse files
[DI] Warn when a definition relies on a deprecated class in ContainerBuilder::createService()
1 parent 47f804f commit c6e9e01

File tree

3 files changed

+27
-14
lines changed

3 files changed

+27
-14
lines changed

DependencyInjection/FrameworkExtension.php

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -841,22 +841,29 @@ private function registerAnnotationsConfiguration(array $config, ContainerBuilde
841841
{
842842
$loader->load('annotations.xml');
843843

844-
if ('file' === $config['cache']) {
845-
$cacheDir = $container->getParameterBag()->resolveValue($config['file_cache_dir']);
846-
if (!is_dir($cacheDir) && false === @mkdir($cacheDir, 0777, true) && !is_dir($cacheDir)) {
847-
throw new \RuntimeException(sprintf('Could not create cache directory "%s".', $cacheDir));
844+
if ('none' !== $config['cache']) {
845+
if ('file' === $config['cache']) {
846+
$cacheDir = $container->getParameterBag()->resolveValue($config['file_cache_dir']);
847+
if (!is_dir($cacheDir) && false === @mkdir($cacheDir, 0777, true) && !is_dir($cacheDir)) {
848+
throw new \RuntimeException(sprintf('Could not create cache directory "%s".', $cacheDir));
849+
}
850+
851+
$container
852+
->getDefinition('annotations.php_file_cache')
853+
->replaceArgument(0, $cacheDir)
854+
;
855+
856+
// The annotations.file_cache_reader service is deprecated
857+
$container
858+
->getDefinition('annotations.file_cache_reader')
859+
->replaceArgument(1, $cacheDir)
860+
->replaceArgument(2, $config['debug'])
861+
;
848862
}
849863

850-
$container
851-
->getDefinition('annotations.file_cache_reader')
852-
->replaceArgument(1, $cacheDir)
853-
->replaceArgument(2, $config['debug'])
854-
;
855-
$container->setAlias('annotation_reader', 'annotations.file_cache_reader');
856-
} elseif ('none' !== $config['cache']) {
857864
$container
858865
->getDefinition('annotations.cached_reader')
859-
->replaceArgument(1, new Reference($config['cache']))
866+
->replaceArgument(1, new Reference('file' !== $config['cache'] ? $config['cache'] : 'annotations.php_file_cache'))
860867
->replaceArgument(2, $config['debug'])
861868
;
862869
$container->setAlias('annotation_reader', 'annotations.cached_reader');

Resources/config/annotations.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,12 @@
1919
<argument /><!-- Debug-Flag -->
2020
</service>
2121

22+
<service id="annotations.php_file_cache" class="Doctrine\Common\Cache\PhpFileCache" public="false">
23+
<argument /><!-- Cache-Directory -->
24+
</service>
25+
2226
<service id="annotations.file_cache_reader" class="%annotations.file_cache_reader.class%" public="false">
27+
<deprecated>The "%service_id%" service is deprecated since 2.8 and will be removed in 3.0.</deprecated>
2328
<argument type="service" id="annotations.reader" />
2429
<argument /><!-- Cache-Directory -->
2530
<argument /><!-- Debug Flag -->

Tests/DependencyInjection/FrameworkExtensionTest.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -320,8 +320,9 @@ public function testAnnotations()
320320
{
321321
$container = $this->createContainerFromFile('full');
322322

323-
$this->assertEquals($container->getParameter('kernel.cache_dir').'/annotations', $container->getDefinition('annotations.file_cache_reader')->getArgument(1));
324-
$this->assertInstanceOf('Doctrine\Common\Annotations\FileCacheReader', $container->get('annotation_reader'));
323+
$this->assertEquals($container->getParameter('kernel.cache_dir').'/annotations', $container->getDefinition('annotations.php_file_cache')->getArgument(0));
324+
$this->assertSame('annotations.cached_reader', (string) $container->getAlias('annotation_reader'));
325+
$this->assertSame('annotations.php_file_cache', (string) $container->getDefinition('annotations.cached_reader')->getArgument(1));
325326
}
326327

327328
public function testFileLinkFormat()

0 commit comments

Comments
 (0)