gpt4 book ai didi

Symfony2 自定义对象注释

转载 作者:行者123 更新时间:2023-12-04 17:25:51 26 4
gpt4 key购买 nike

有谁知道是否可以让一个包使用注释阅读器来读取非 Doctrine 对象的新自定义注释?到目前为止,我所看到的一切要么是针对 Controller ,要么是以某种方式扩展 Doctrine。

我希望能够做的是这样的事情:

class MyTestClass {

/**
* @MyBundleName\Foo
*/
public $foo_var;

/**
* @MyBundleName\Bar
*/
public $bar_var;
}

然后有一些代码,当给定一个 MyTestClass 的实例时可以算出哪个注释应用于哪个属性。

最佳答案

是的,再深入研究 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
}

希望可以对其他人有用!

关于Symfony2 自定义对象注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10047411/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com