Din seria “Documentatia oficiala e cea mai buna”, e explicat destul de clar aici. Iti spune de cate tipuri pot fi anotarile (3) si iti da si un exemplu despre cum sa le folosesti (destul de rudimentar, dar usor de extrapolat si pentru alte tipuri de anotari.
@cristianciofu
Pentru ca probabil ai ajuns si tu pe pagina aia, dar nu te-a ajutat prea mult o sa iti dau un exemplu complet facut de mine, in Symfony. E vorba de un listener care seteaza user-ul curent pentru o entitate nou creata, daca entitatea are ca anotare UserAware.
The Annotation
<?php
namespace My\ExampleBundle\Doctrine\Annotation;
use Doctrine\Common\Annotations\Annotation;
/**
* @Annotation
* @Target("CLASS")
*/
final class UserAware
{
public $fieldName = 'user_id';
public $entitySetterName = 'setUser';
public $entityGetterName = 'getUser';
}
The listener where I use the annotation (can be used in controller with a few changes)
Sperand ca va merge, insa obiectul `$annotation` e `NULL`
Am incercat tot felul de chestii gasite pe net, dar nimic nu merge...
Pare asa banal la prima privire, dar e ceva ce imi scapa :)
> Oricum, merci mult pentru comentariu si pentru incercarea de a ma ajuta
Uite ce am gasit in Doctrine\Common\Annotations\AnnotationReader (nu stiu daca asta este si implementarea de Reader pe care o folosesti si tu, trebuie sa verifici):
public function getPropertyAnnotation(ReflectionProperty $property, $annotationName)
{
$annotations = $this->getPropertyAnnotations($property);
foreach ($annotations as $annotation) {
if ($annotation instanceof $annotationName) {
return $annotation;
}
}
return null;
}
Ai incercat sa scrii numele classei fara dublu ? Sau sa o incarci folosind un USE statement in fisierul in care e listenerul declarat?
Deasemenea mai exista o metoda getPropertyAnnotations(ReflectionProperty $property) care iti intoarce toate anotarile de pe accea proprietate. Arunca o provire cu xdebug sau clasicul var_dump($x); die; pe acolo si vezi exact care e scaparea.