@@ -1481,13 +1481,50 @@ private function registerAnnotationsConfiguration(array $config, ContainerBuilde
14811481 ->setMethodCalls ([['registerLoader ' , ['class_exists ' ]]]);
14821482 }
14831483
1484- if ('none ' !== $ config ['cache ' ]) {
1484+ if ('none ' === $ config ['cache ' ]) {
1485+ $ container ->removeDefinition ('annotations.cached_reader ' );
1486+ $ container ->removeDefinition ('annotations.psr_cached_reader ' );
1487+
1488+ return ;
1489+ }
1490+
1491+ $ cacheService = $ config ['cache ' ];
1492+ if (\in_array ($ config ['cache ' ], ['php_array ' , 'file ' ])) {
1493+ $ isPsr6Service = $ container ->hasDefinition ('annotations.psr_cached_reader ' );
1494+ } else {
1495+ $ isPsr6Service = false ;
1496+ trigger_deprecation ('symfony/framework-bundle ' , '5.3 ' , 'Using a custom service for "framework.annotation.cache" is deprecated, only values "none", "php_array" and "file" are valid in version 6.0. ' );
1497+ }
1498+
1499+ if ($ isPsr6Service ) {
1500+ $ container ->removeDefinition ('annotations.cached_reader ' );
1501+ $ container ->setDefinition ('annotations.cached_reader ' , $ container ->getDefinition ('annotations.psr_cached_reader ' ));
1502+
1503+ if ('php_array ' === $ config ['cache ' ]) {
1504+ $ cacheService = 'annotations.psr_cache ' ;
1505+
1506+ // Enable warmer only if PHP array is used for cache
1507+ $ definition = $ container ->findDefinition ('annotations.cache_warmer ' );
1508+ $ definition ->addTag ('kernel.cache_warmer ' );
1509+ } elseif ('file ' === $ config ['cache ' ]) {
1510+ $ cacheService = 'annotations.filesystem_cache_adapter ' ;
1511+ $ cacheDir = $ container ->getParameterBag ()->resolveValue ($ config ['file_cache_dir ' ]);
1512+
1513+ if (!is_dir ($ cacheDir ) && false === @mkdir ($ cacheDir , 0777 , true ) && !is_dir ($ cacheDir )) {
1514+ throw new \RuntimeException (sprintf ('Could not create cache directory "%s". ' , $ cacheDir ));
1515+ }
1516+
1517+ $ container
1518+ ->getDefinition ('annotations.filesystem_cache_adapter ' )
1519+ ->replaceArgument (2 , $ cacheDir )
1520+ ;
1521+ }
1522+ } else {
1523+ // Legacy code for doctrine/annotations:<1.13
14851524 if (!class_exists (\Doctrine \Common \Cache \CacheProvider::class)) {
14861525 throw new LogicException ('Annotations cannot be cached as the Doctrine Cache library is not installed. Try running "composer require doctrine/cache". ' );
14871526 }
14881527
1489- $ cacheService = $ config ['cache ' ];
1490-
14911528 if ('php_array ' === $ config ['cache ' ]) {
14921529 $ cacheService = 'annotations.cache ' ;
14931530
@@ -1508,20 +1545,19 @@ private function registerAnnotationsConfiguration(array $config, ContainerBuilde
15081545
15091546 $ cacheService = 'annotations.filesystem_cache ' ;
15101547 }
1548+ }
15111549
1512- $ container
1513- ->getDefinition ('annotations.cached_reader ' )
1514- ->replaceArgument (2 , $ config ['debug ' ])
1515- // temporary property to lazy-reference the cache provider without using it until AddAnnotationsCachedReaderPass runs
1516- ->setProperty ('cacheProviderBackup ' , new ServiceClosureArgument (new Reference ($ cacheService )))
1517- ->addTag ('annotations.cached_reader ' )
1518- ;
1550+ $ container
1551+ ->getDefinition ('annotations.cached_reader ' )
1552+ ->replaceArgument (2 , $ config ['debug ' ])
1553+ // temporary property to lazy-reference the cache provider without using it until AddAnnotationsCachedReaderPass runs
1554+ ->setProperty ('cacheProviderBackup ' , new ServiceClosureArgument (new Reference ($ cacheService )))
1555+ ->addTag ('annotations.cached_reader ' )
1556+ ;
15191557
1520- $ container ->setAlias ('annotation_reader ' , 'annotations.cached_reader ' );
1521- $ container ->setAlias (Reader::class, new Alias ('annotations.cached_reader ' , false ));
1522- } else {
1523- $ container ->removeDefinition ('annotations.cached_reader ' );
1524- }
1558+ $ container ->setAlias ('annotation_reader ' , 'annotations.cached_reader ' );
1559+ $ container ->setAlias (Reader::class, new Alias ('annotations.cached_reader ' , false ));
1560+ $ container ->removeDefinition ('annotations.psr_cached_reader ' );
15251561 }
15261562
15271563 private function registerPropertyAccessConfiguration (array $ config , ContainerBuilder $ container , PhpFileLoader $ loader )
0 commit comments