Começo hoje uma nova seria de podcasts do php5minutes e dessa vez o assunto é reflection(http://en.wikipedia.org/wiki/Reflection_(computer_science)).
Primeiro vamos a definição de reflection e minha interpretação é:
Reflection é a habilitade de uma classe olhar para si, internamente(assim como um humano reflete sobre ele, suas atitude, suas qualidades e seus relacionamentos), ou seja, quando uma linguagem implementa reflection, significa que uma instancia de um objecto pode falar sobre ele para você, respondendo pergunta como, quem ele é, o que ele faz e o que ele sabe.
- O que eu sou?
- O que eu faço?
- O que eu sei?
E assim, a reflexão de um objecto permite que ele se observe, como nós olhando em um espelho. E dai vem o nome do recurso. Tão elucidativo quanto a explicação da propriedade bubões em flex. e outras linguagens(quem conhece a propriedade sabe do que estou falando).
A época em que comecei a me interessar pro reflexão me leva aos tempos em que programava em Borland Delphi, ou como queiram os puristas, Object Pascal.
Usar RTTI – Runtime Type Information(informação de tipos em tempo de execução) havia se tornado uma obsessão para mim na época e acho que dai vem a paixão pelo assunto.
Podemos fazer com que um código seja muito mais inteligente ao usarmos a habilidade que ele mesmo tem em se olhar e se “auto produzir”.
Talvez isso tenha a ver com meus fantasmas de programação, mas isso deixa pra um outro post.
Acho que aqui termina minhas reflexões pessoais para entrar para o assunto de código e finalizo os parágrafos emos com a declaração: ” Imaginação é mais importante que conhecimento(Albert Einstein), logo, não adianta saber muito sobre algo e não saber refletir isso em toda a concepção da palavra reflexão.”
Pronto, acabou o emismo(sic).
Vamos abordar as pergunta que uma linguagem que implementa reflexão é capaz de responder.
A primeira – O que eu sou? – é quando uma instância é capaz de responder qual o seu tipo.
class MeuObjeto{}
$instancia = new MeuObjeto();
// ai perguntamos: O que é você e a resposta é -Sou uma instancia de classe do tipo "MeuObjeto".
Ainda não vou me alongar de que tipo de ganhos esse tipo de informação traz, mas creia-me, isso vale ouro.
Continue lendo o php5minutes 8 – Reflection – Para que serve esse Recurso?
Comentários Recentes