44
55use Doctrine \Common \Annotations \AnnotationReader ;
66use Doctrine \Common \Annotations \AnnotationRegistry ;
7- use Doctrine \Common \Annotations \CachedReader ;
7+ use Doctrine \Common \Annotations \PsrCachedReader ;
88use Doctrine \Common \Annotations \Reader ;
99use Doctrine \Common \Cache \ArrayCache ;
10+ use Doctrine \Common \Cache \Psr6 \CacheAdapter ;
1011use Doctrine \ODM \MongoDB \Mapping \Driver as DriverMongodbODM ;
1112use Doctrine \ORM \Mapping \Driver as DriverORM ;
1213use Doctrine \Persistence \Mapping \Driver \MappingDriverChain ;
14+ use Symfony \Component \Cache \Adapter \ArrayAdapter ;
15+ use function class_exists ;
1316
1417/**
1518 * Version class allows to checking the dependencies required
@@ -33,7 +36,7 @@ public static function registerMappingIntoDriverChainORM(MappingDriverChain $dri
3336 {
3437 self ::registerAnnotations ();
3538 if (!$ reader ) {
36- $ reader = new CachedReader ( new AnnotationReader (), new ArrayCache () );
39+ $ reader = self :: createAnnotationReader ( );
3740 }
3841 $ annotationDriver = new DriverORM \AnnotationDriver ($ reader , [
3942 __DIR__ .'/Translatable/Entity ' ,
@@ -51,7 +54,7 @@ public static function registerAbstractMappingIntoDriverChainORM(MappingDriverCh
5154 {
5255 self ::registerAnnotations ();
5356 if (!$ reader ) {
54- $ reader = new CachedReader ( new AnnotationReader (), new ArrayCache () );
57+ $ reader = self :: createAnnotationReader ( );
5558 }
5659 $ annotationDriver = new DriverORM \AnnotationDriver ($ reader , [
5760 __DIR__ .'/Translatable/Entity/MappedSuperclass ' ,
@@ -69,7 +72,7 @@ public static function registerMappingIntoDriverChainMongodbODM(MappingDriverCha
6972 {
7073 self ::registerAnnotations ();
7174 if (!$ reader ) {
72- $ reader = new CachedReader ( new AnnotationReader (), new ArrayCache () );
75+ $ reader = self :: createAnnotationReader ( );
7376 }
7477 $ annotationDriver = new DriverMongodbODM \AnnotationDriver ($ reader , [
7578 __DIR__ .'/Translatable/Document ' ,
@@ -86,7 +89,7 @@ public static function registerAbstractMappingIntoDriverChainMongodbODM(MappingD
8689 {
8790 self ::registerAnnotations ();
8891 if (!$ reader ) {
89- $ reader = new CachedReader ( new AnnotationReader (), new ArrayCache () );
92+ $ reader = self :: createAnnotationReader ( );
9093 }
9194 $ annotationDriver = new DriverMongodbODM \AnnotationDriver ($ reader , [
9295 __DIR__ .'/Translatable/Document/MappedSuperclass ' ,
@@ -102,4 +105,17 @@ public static function registerAnnotations()
102105 {
103106 AnnotationRegistry::registerFile (__DIR__ .'/Mapping/Annotation/All.php ' );
104107 }
108+
109+ private static function createAnnotationReader ()
110+ {
111+ $ reader = new AnnotationReader ();
112+
113+ if (class_exists (ArrayAdapter::class)) {
114+ $ reader = new PsrCachedReader ($ reader , new ArrayAdapter ());
115+ } elseif (class_exists (ArrayCache::class)) {
116+ $ reader = new PsrCachedReader ($ reader , CacheAdapter::wrap (new ArrayCache ()));
117+ }
118+
119+ return $ reader ;
120+ }
105121}
0 commit comments