Rogério Lino

PHP: Annotations

Por Rogério Alencar Lino Filho | 26 de março de 2010 | 1 Comentário

É 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 annotation
class Persistent extends Annotation {}

// Custom annotation
class Table extends Annotation {}

// Multi valued annotation
class Secured extends Annotation {
   public $role;
   public $level;
}

/**
 * @Persistent
 * @Table("people")
 * @Secured(role = "admin", level = 2)
 */
class Person {
   // some code
}

// getting the annotation by class name
$reflection = new ReflectionAnnotatedClass('Person');

// getting the annotation by instance
$person = new Person();
$reflection = new ReflectionAnnotatedClass($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.


/**
 * @DoctrineEntity(tableName="cms_articles")
 */
class CmsArticle {

   /**
    * @DoctrineId
    * @DoctrineColumn(type="integer")
    * @DoctrineIdGenerator("auto")
    */
   public $id;

   /**
    * @DoctrineColumn(type="varchar", length=255)
    */
   public $topic;

   /**
    * @DoctrineColumn(type="varchar")
    */
   public $text;

   /**
    * @DoctrineManyToOne(targetEntity="CmsUser",
           joinColumns={"user_id" = "id"})
    */
   public $user;

   /**
    * @DoctrineOneToMany(targetEntity="CmsComment", mappedBy="article")
    */
   public $comments;
}
Tags: , , , , , , ,

Twitter: Resumo #1

Por Rogério Alencar Lino Filho | 5 de março de 2010 | 0 Comment

IE6 Funeral The Computer Language Benchmarks Game Java Performance comparisons Ubuntu cada vez mais Mac Password Chart: bom para os gestores de redes Empresa aérea bane Flash de seu site Twitter Drops MySQL For Cassandra PS3 Bug Mercado de games sofre com falta de mão de obra Nova hierarquia para certificações Java Gostou dos links? [...]

Tags: , , , , , , , , , , , , , , , ,

Javascript: Games

Por Rogério Alencar Lino Filho | 2 de fevereiro de 2010 | 1 Comentário

Conforme a evolução dos browsers e consequentemente das suas engines de javascript, hoje é possível encontrarmos diversas API/Engines dessa linguagem de script. E um tipo de engine que vem crescendo nessa linguagem é a de jogos. O que antes precisariámos de um plugin adicional – Flash Player e/ou Java Applet – consumindo mais memória e [...]

Tags: , , , , , , , , , , , , , , , , ,

Javascript: Code Syntax Highlight

Por Rogério Alencar Lino Filho | 23 de novembro de 2007 | 3 Comentários

Algo que qualquer editor que se prese tem que ter é a capacidade de facilitar a leitura do código utilizando o que se chama Syntax Highlight . O ato de distinguir partes do código com cores diferentes ajudando assim a uma melhor associação do mesmo.O que não ocorria na web até um tempo atrás, quando [...]

Tags: , , , , , , , ,

Paradigma Orientado a Objetos

Por Rogério Alencar Lino Filho | 5 de outubro de 2006 | 2 Comentários

A Programação Orientada a Objetos (POO) tem grande vantagem diantes as demais, como por exemplo o reuso de código, organização lógica dos programas e estruturação do código produzido. Abaixo alguns conceitos de POO. Classe É na classe que definimos as propriedades e os métodos dos objetos. Objeto: É a instância de uma classe, é o [...]

Tags: , , , , , , , , ,