我正在读这个documentation article about Custom Annotations in Doctrine。我知道我可以使用$reader->getClassAnnotations($reflClass)
来检索特定类的注释。获取具有特定注释的所有实体类的列表的最佳方法是什么?
答案 0 :(得分:2)
$driver = new \Doctrine\ORM\Mapping\Driver\PHPDriver($entities_path );
$classes = $driver->getAllClassNames();
foreach ($classes as $key => $class) {
$reader = new \Doctrine\Common\Annotations\AnnotationReader();
$annotationReader = new \Doctrine\Common\Annotations\CachedReader(
$reader,
new \Doctrine\Common\Cache\ArrayCache()
);
$reflClass = new ReflectionClass("\Entities\\".$reportableClass);
$annotation = $annotationReader->getClassAnnotation(
$reflClass,
'Custom_Annotation'
);
if (is_null($annotation)) {
unset($classes[$key]);
}
}
Doctrine的AbstractFileDriver(Doctrine \ ORM \ Mapping \ Driver \ AbstractFileDriver.php)文档说:
基于文件的元数据驱动程序的基本驱动程序
替换
文件驱动程序在加载映射文件的模式下运行 个别课程随需应变。这需要用户坚持 每个类1个映射文件的约定和文件名 映射文件必须对应于完整的类名,包括 命名空间,命名空间分隔符'\',由点'。'。
您也可以使用而不是PhpDriver,DatabaseDriver(Doctrine \ ORM \ Mapping \ Driver \ DatabaseDriver.php)。