Extract annotation reader setup to a provider class
[MAILPOET-2437]
This commit is contained in:
committed by
Jack Kitterhing
parent
0bfeaab160
commit
68c1b62df5
30
lib/Doctrine/Annotations/AnnotationReaderProvider.php
Normal file
30
lib/Doctrine/Annotations/AnnotationReaderProvider.php
Normal 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;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user