Las diversas clases de Zend_Reflection imitan la
API de la Reflection API de PHP - con una
diferencia importante. La Reflection API de PHP no
proporciona introspección en las etiquetas de anotación de docblock, ni en los tipos de las
variables de parámetro ni en los tipos de retorno.
Zend_Reflection analiza las anotaciones del docblock del método para
determinar los tipos de las variables de parámetro y el tipo de retorno. En concreto,
se usan las anotaciones @param y @return.
Sin embargo, también se puede comprobar cualquier otra etiqueta de anotación, así como
las descripciones estándar "corta" y "larga".
Cada objeto de reflexión en Zend_Reflection sobrescribe el
método getDocblock() para devolver una instancia de
Zend_Reflection_Docblock. Esta clase proporciona introspección
en los docblocks y las etiquetas de anotación.
Zend_Reflection_File es una nueva clase de reflexión que permite
la introspección de archivos PHP. Con ella, se pueden recuperar las clases,
funciones y el código PHP global contenidos en el archivo.
Por último, los diversos métodos que devuelven otros objetos de reflexión admiten un segundo parámetro, el nombre de la clase de reflexión a usar para el objeto de reflexión devuelto.
Zend_Reflection_Docblock es el núcleo del
valor añadido de Zend_Reflection sobre la
Reflection API de PHP. Proporciona los siguientes métodos:
getContents(): devuelve el contenido completo del docblock.getStartLine(): devuelve la posición inicial de el docblock dentro del archivo que lo define.getEndLine(): obtiene la última línea del docblock dentro del archivo que lo define.getShortDescription(): obtiene la descripción corta de una línea (normalmente la primera línea del docblock).getLongDescription(): obtiene la descripción larga del docblock.hasTag($name): determina si el docblock tiene la etiqueta de anotación indicada.getTag($name): recupera el objeto de reflexión de la etiqueta de anotación indicada, o un booleanoFALSEsi no está presente.getTags($filter): recupera todas las etiquetas, o todas las etiquetas que coincidan con la cadena$filterindicada. Las etiquetas devueltas serán un array de objetosZend_Reflection_Docblock_Tag.
Zend_Reflection_Docblock_Tag proporciona reflexión para
etiquetas de anotación individuales. La mayoría de las etiquetas constan solo de un nombre y una
descripción. En el caso de algunas etiquetas especiales, la clase proporciona un
método de fábrica para obtener una instancia de la clase apropiada.
Los siguientes métodos están definidos para
Zend_Reflection_Docblock_Tag:
factory($tagDocblockLine): instancia la clase de reflexión de etiqueta apropiada y la devuelve.getName(): devuelve el nombre de la etiqueta de anotación.getDescription(): devuelve la descripción de la anotación.
Zend_Reflection_Docblock_Tag_Param es una versión
especializada de Zend_Reflection_Docblock_Tag. La
descripción de la etiqueta de anotación @param consta del
tipo de parámetro, el nombre de la variable y la descripción de la variable. Añade los
siguientes métodos a Zend_Reflection_Docblock_Tag:
getType(): devuelve el tipo de la variable de parámetro.getVariableName(): devuelve el nombre de la variable de parámetro.
Al igual que Zend_Reflection_Docblock_Tag_Param,
Zend_Reflection_Docblock_Tag_Return es una versión
especializada de Zend_Reflection_Docblock_Tag. La
descripción de la etiqueta de anotación @return consta del
tipo de retorno y la descripción de la variable. Añade el siguiente método
a Zend_Reflection_Docblock_Tag:
getType(): devuelve el tipo de retorno.
Zend_Reflection_File proporciona introspección en
archivos PHP. Con ella, se pueden examinar las clases, funciones y
el código PHP suelto definido en un archivo. Define los siguientes métodos:
getFileName(): recupera el nombre del archivo que se está reflejando.getStartLine(): recupera la línea inicial del archivo (siempre "1").getEndLine()recupera la última línea / número de líneas del archivo.getDocComment($reflectionClass = 'Zend_Reflection_Docblock'): recupera el objeto de reflexión del docblock a nivel de archivo.getClasses($reflectionClass = 'Zend_Reflection_Class'): recupera un array de objetos de reflexión, uno por cada clase definida en el archivo.getFunctions($reflectionClass = 'Zend_Reflection_Function'): recupera un array de objetos de reflexión, uno por cada función definida en el archivo.getClass($name = null, $reflectionClass = 'Zend_Reflection_Class'): recupera el objeto de reflexión de una sola clase.getContents(): recupera el contenido completo del archivo.
Zend_Reflection_Class extiende
ReflectionClass, y sigue su API. Añade un
método adicional, getDeclaringFile(), que se puede
usar para recuperar el objeto de reflexión Zend_Reflection_File
del archivo que define la clase.
Además, los siguientes métodos añaden un argumento adicional para especificar la clase de reflexión a usar al obtener un objeto de reflexión:
getDeclaringFile($reflectionClass = 'Zend_Reflection_File')getDocblock($reflectionClass = 'Zend_Reflection_Docblock')getInterfaces($reflectionClass = 'Zend_Reflection_Class')getMethod($reflectionClass = 'Zend_Reflection_Method')getMethods($filter = -1, $reflectionClass = 'Zend_Reflection_Method')getParentClass($reflectionClass = 'Zend_Reflection_Class')getProperty($name, $reflectionClass = 'Zend_Reflection_Property')getProperties($filter = -1, $reflectionClass = 'Zend_Reflection_Property')
Zend_Reflection_Extension extiende
ReflectionExtension, y sigue su API. Sobrescribe
los siguientes métodos para añadir un argumento adicional que especifica
la clase de reflexión a usar al obtener un objeto de reflexión:
getFunctions($reflectionClass = 'Zend_Reflection_Function'): recupera un array de objetos de reflexión que representan las funciones definidas por la extensión.getClasses($reflectionClass = 'Zend_Reflection_Class'): recupera un array de objetos de reflexión que representan las clases definidas por la extensión.
Zend_Reflection_Function añade un método para recuperar
el tipo de retorno de la función, además de sobrescribir varios métodos para
permitir especificar la clase de reflexión a usar en los objetos de reflexión
devueltos.
getDocblock($reflectionClass = 'Zend_Reflection_Docblock'): recupera el objeto de reflexión del docblock de la función.getParameters($reflectionClass = 'Zend_Reflection_Parameter'): recupera un array de todos los objetos de reflexión de los parámetros de la función.getReturn(): recupera el objeto de reflexión del tipo de retorno.
Zend_Reflection_Method refleja
Zend_Reflection_Function, y solo sobrescribe un
método adicional:
getParentClass($reflectionClass = 'Zend_Reflection_Class'): recupera el objeto de reflexión de la clase padre.
Zend_Reflection_Parameter añade un método para recuperar
el tipo del parámetro, además de sobrescribir métodos para permitir especificar
la clase de reflexión a usar en los objetos de reflexión devueltos.
getDeclaringClass($reflectionClass = 'Zend_Reflection_Class'): obtiene la clase declarante del parámetro como un objeto de reflexión (si está disponible).getClass($reflectionClass = 'Zend_Reflection_Class'): obtiene la clase del parámetro como un objeto de reflexión (si está disponible).getDeclaringFunction($reflectionClass = 'Zend_Reflection_Function'): obtiene la función del parámetro como un objeto de reflexión (si está disponible).getType(): obtiene el tipo del parámetro.