É indiscutível a agilidade e facilidade de configuração que as annotations provêm no Java, e com o objetivo de trazer tal comodidade ao PHP surgiu o projeto Addendum - escrito por Jan Suchal - que permite via Reflection) acessar as annotations das classes.
As annotations devem ser escritas em blocos de comentários, uma vez que o @ (caracter que inicia uma annotation) é um caractere reservado no PHP. Elas podem ser mono ou multi valoradas de acordo com os exemplos abaixo.
// Custom annotationclassPersistentextendsAnnotation{}// Custom annotationclassTableextendsAnnotation{}// Multi valued annotationclassSecuredextendsAnnotation{public$role;public$level;}/** * @Persistent * @Table("people") * @Secured(role = "admin", level = 2) */classPerson{// some code}// getting the annotation by class name$reflection=newReflectionAnnotatedClass('Person');// getting the annotation by instance$person=newPerson();$reflection=newReflectionAnnotatedClass($person);// true$reflection->hasAnnotation('Persistent');// contains string "people"$reflection->getAnnotation('Table')->value;
E seguindo na mesma onda da JPA, a versão 2.0 do projeto Doctrine implementou também a mesma funcionalidade e agora possui suas próprias annotations facilitando a configuração das classes de persistência e seus relacionamentos.