Reflection API
Este tema, es uno de los mas subestimados temas en PHP. Consiste en una serie de clases y metodos con particularidad de poder enseñaros sobre otras clases y sus caracteristicas, e incluso generar plugins dinamicos mediante el uso de doccoments integrados en el codigo.
Este tella es llamado introspeccion y el proceso refleccion. A continuacion veremos unos ejemplos aplicados a revisar clases y metodos.
Pueden encontrar mas informacion en www.php.net/oop5.reflection.
Esta API esta compuesta por las siguientes clases:
- ReflectionClass,
- ReflectionMethod
- ReflectionParameter
- ReflectionProperty
ReflecionClass
La clase ReflectionClass es usada para aprender sobre una clases. Puede determinar si la clase es una extension de otra en particular. Obteniendo asi una lista de metodos y propiedades (miembros), verificar si la clase es final y muchas otras cosas. Esta clase funciona tanto con clases internas de PHP o definidas por el usuario.
Utilizaremos el siguiente archivo corporatedrone.class.php
Consiste en una serie de 2 propiedades privadas llamadas $employeeid y $tiecolor. Y tiene generados getters y setters respectivos.
1_reflectionMethod.class.php
En este segundo ejercicio veremos como la propia clase Reflection puede aprender sobre si misma. Previamente creando un objeto ReflectionClass ingresando el nombre de una clase como parametro constructor. Y luego utilizando el metodo estatico de la clase Reflection::export() el cual recibe como parametro un objeto de cualquier clase que implemente la interface Reflector.
2_reflectionMethod.class.php
3_examinando_una_clase.php
4_obtener-el-codigo-de-un-metodo.php
RelectionParameter
El debido a que PHP 5 nos permite incluir en la definicion de un metodo el tipo de parametro a recibir, el hecho de poder inspeccionar estos metodos se vuelve algo sumamente util. A continuacion revisaremos el codigo para realizar una introspeccion en sobre una clase pero nos enfocaremos en sus parametros.
Vamos a utilizarlo para aprender mas sobre el metodo getTieColor.
ReflectionProperties
Otro de los componentes mas importantes del Reflection API esta compuesto por la habilidad de conocer las propiedades de un metodo.
Otras de las aplicaciones mas comunes de esta API es la posibilidad de autogeneracion de documentos doccoments mediante PHPDoc y un framework de testeos como lo es PHPUnit.
|