ReflecciónIntroducciónPHP 5 viene con un API completa de reflexión que agrega la habilidad de hacer ingeniería inversa de clases, interfaces, funciones y métodos así como extensiones. Adicionalmente, el API de reflexión también ofrece formas de obtener los comentarios de los documentos para funciones, clases y métodos. El API de reflexión es una extensión orientada a objetos para el compilador Zend, consistente de las siguientes clases:
Si fuéramos a ejecutar el código en el siguiente ejemplo: ReflectionFunctionLa clase ReflectionFunction te permite funciones de ingeniería inversa.
Para entender directamente una función, primero tiene que crear una isntancia de la clase ReflectionFunction. Hasta entonces puede llamar cualquier de los métodos anteriores en esta instancia.
ReflectionParameterLa clase ReflectionParameter obtiene información acerca de los parámetros de una función o un método.
Para entender los parámetros de la función, tendrá primero que crear una instancia de la clase ReflectionFunction o de la clase ReflectionMethod y entonces usar sus método getParameters() para obtener una matriz de parámetros.
ReflectionClassLa clase ReflectionClass te permite hacer ingeniería inversa de clases.
Para entender una clase, primero tendrá que crear una instancia de la clase ReflectionClass. Entonces puede llamar cualquiera de los métodos anteriores en esta instancia.
ReflectionMethodLa clase ReflectionMethod te permite hacer ingenieria inversa de los métodos de la clase.
Para entender los métodos, primero tendrá que crear una instancia de la clase ReflectionMethod. Puede entonces llamar cualquiera de los métodos anteriores en esta instancia.
ReflectionPropertyLa clase ReflectionProperty te permite hacer ingeniería inversa a las propiedades de la clase.
Para entender las propiedades, se debe primero crear una instancia de la clase ReflectionProperty. Y entonces puede llamar cualquiera de los métodos anteriores sobre esta instancia.
ReflectionExtensionLa clase ReflectionExtension te permite hacer ingeniería inversa a extensiones. Puede obtener todas las extensiones cargadas en tiempo de ejecución usando get_loaded_extensions().
Para entender una extensión, primero se tiene que crear una instancia de la clase ReflectionExtension. Y entonces puede llamarse a cualquiera de los métodos mencionados arriba sobre esa instancia.
Extendiendo las clases de reflexiónEn caso de que se quiera crear una versión especializada de las clases integradas (es decir, para crear HTML con colores cuando se exporta, tener fácil acceso a las variables de los miembros en lugar de los métodos o tener métodos de utilería), se puede simplemente extenderlos.
|
|||||||||||||||||||||||||||||||