Files
piratepoet/lib/Doctrine/Annotations/AnnotationReaderProvider.php
Rostislav Wolny 86e938b46e Provide PSR array cache and switch annotation reader to it
The annotation reader was using CachedReader which has been deprecated so we need to switch to PsrCachedReader
Since 2.0 doctrine/cache no longer provides implementations of caches so I also needed to implement a simple PSR array cache.
[MAILPOET-3892]
2021-10-28 15:44:18 +02:00

30 lines
1.1 KiB
PHP

<?php
namespace MailPoet\Doctrine\Annotations;
use MailPoet\Doctrine\PSRArrayCache;
use MailPoetVendor\Doctrine\Common\Annotations\AnnotationReader;
use MailPoetVendor\Doctrine\Common\Annotations\AnnotationRegistry;
use MailPoetVendor\Doctrine\Common\Annotations\PsrCachedReader;
class AnnotationReaderProvider {
/** @var PsrCachedReader */
private $annotationReader;
public function __construct() {
// register annotation reader if doctrine/annotations package is installed
// (i.e. in dev environment, on production metadata is dumped in the build)
$readAnnotations = class_exists(PsrCachedReader::class) && class_exists(AnnotationReader::class);
if ($readAnnotations) {
// autoload all annotation classes using registered loaders (Composer)
// (needed for Symfony\Validator constraint annotations to be loaded)
AnnotationRegistry::registerLoader('class_exists');
$this->annotationReader = new PsrCachedReader(new AnnotationReader(), new PSRArrayCache());
}
}
public function getAnnotationReader(): ?PsrCachedReader {
return $this->annotationReader;
}
}