2012-04-06 87 views
5

有誰知道是否有可能使用註釋閱讀器讀取非Doctrine對象的新自定義註釋?到目前爲止,我所看到的一切都是爲了控制者或者以某種方式擴展主義。Symfony2對象的自定義註釋

我想什麼,能夠做的就是這樣的事情:

class MyTestClass { 

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

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

然後有一些代碼,當給出的MyTestClass一個實例可以運行哪些應用到屬性的註釋。

回答

10

沒錯,有點更深入的研究主張如何做到這一點,我想我知道該怎麼做。所以如果有人需要這樣做,這裏是我怎麼做的(將欣賞任何反饋)

我有一個服務,我用它來讀取註釋,所以在config.yml我已經包括annotation_reader服務,它提供訪問方法來讀取您的註釋。

每個註釋需要解決的一類和類必須擴展基本教義註解類,這樣做從我的問題美孚註解你會做這樣的事情:

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 
} 

希望能對其他人有用!