Anotações é uma forma de adicionar informações a alguma coisa. São meta-dados, ou seja, não chegam a fazer parte do conteúdo em si, mas descrevem algum atributo ou adicionam alguma informação a este. Em programação Anotações, ou annotations, são reconhecidas pelo símbolo "@", as vezes parte de um comentário ou não.
Geralmente é usado em Atributos(estados) ou Métodos(comportamento) de Objetos/Classes, para ser usado por algum framework ou outra parte da aplicação, adicionando alguma informação a ser usado por esse. É usado para agilizar o processo, sem ter que escrever muitas linhas apenas para um dado simples.
Por exemplo podemos definir que um atributo deve ser persistido(ou não), ou que determinado método deve sempre ser disparado antes de outro. Anotações por si só são apenas informações, tanto como comentários, o que a aplicação ou framework faz com elas é o que importa.
PHP não implementa suporte a anotações por padrão, não faz parte do core. Mas a comunidade é grande e existe um framework muito bom para isto, o Addendum. Ele não tem dependências, é bem simples de usar e esta bem documentado, como anotações devem ser. Tenho usado-o em um par de projetos, e tem atendido muito bem.
Vejam como é simples o uso, supondo uma classe User, com os atributos $login e $passwd, queremos dizer que a classe é persistente, podemos fazer assim:
/** @Persistent **/
class User
E continuar a definir a classe, fazemos então o atributo $login a chave primaria:
/** @Persistent (pk=true) **/
private $login ;
E por ai vai. A classe Persistent precisa existir também, estendendo a Annotation.
Como disse antes, a anotação por si só não faz a mágica. O addendum "apenas" serve para recuperar as anotações da classe/atributo/método, o que fazer com ela depende de você(ou do seu framework).
Para recuperar as informações usa-se os seguintes métodos, entre outros:
$reflection = new ReflectionAnnotatedClass('User'); $anotation = $reflection->getAnnotation('Persistent'); $isPK = $anotation->pk;
Simples e direto, porém bem flexível. Apesar de bem útil, ainda não conheço nenhum framework ou projeto que use estes recursos.
- Comments
-
|2009-08-20 21:39:08 Diogo SouzaOps, esqueci do link:
http://code.google.com/p/addendum/
Abraço.





