Extract annotation reader setup to a provider class

[MAILPOET-2437]
This commit is contained in:
Jan Jakeš
2019-10-23 16:43:08 +02:00
committed by Jack Kitterhing
parent 0bfeaab160
commit 68c1b62df5
7 changed files with 55 additions and 17 deletions

View File

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