我正在阅读有关 Doctrine 中的自定义注释的文档文章。我知道我可以用它$reader->getClassAnnotations($reflClass)
来检索特定类的注释。获取具有特定注释的所有实体类的列表的最佳方法是什么?
问问题
2219 次
1 回答
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 个映射文件的约定,并且映射文件的文件名必须对应于完整的类名,包括命名空间,命名空间分隔符为“\”,替换为点“.”。
您也可以使用 DatabaseDriver (Doctrine\ORM\Mapping\Driver\DatabaseDriver.php) 来代替 PhpDriver。
于 2012-06-26T18:56:09.847 回答