对,再深入研究一下 Doctrine 是如何做到这一点的,我想我知道该怎么做。因此,如果其他人需要这样做,这就是我的做法(感谢任何反馈)
我有一个用于读取注释的服务,因此在 config.yml 中我包含了该annotation_reader
服务,该服务提供对读取注释的方法的访问。
每个注释都需要解析为一个类,并且该类必须扩展基本 Doctrine 注释类,因此要从我的问题中进行 Foo 注释,您可以执行以下操作:
namespace MyBundleName
class Foo extends \Doctrine\Common\Annotations\Annotation {
}
然后您可以通过执行以下操作来阅读注释:
$class = get_class($object);
foreach(object_get_vars($object) as $fieldname => $val){
//$this->annotationReader is an instance of the annotation_reader service
$annotations = $this->annotationReader
->getPropertyAnnotations(
new \ReflectionProperty($class, $fieldName)
);
//$annotations will now contain an array of matched annotations, most likely just an instance of the annotation class created earlier
}
希望对其他人有用!