TigerZF
🌐Español

58.3. Referencia de Zend_Reflection

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.

58.3.1. Zend_Reflection_Docblock

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 booleano FALSE si no está presente.

  • getTags($filter): recupera todas las etiquetas, o todas las etiquetas que coincidan con la cadena $filter indicada. Las etiquetas devueltas serán un array de objetos Zend_Reflection_Docblock_Tag.

58.3.2. Zend_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.

58.3.3. Zend_Reflection_Docblock_Tag_Param

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.

58.3.4. Zend_Reflection_Docblock_Tag_Return

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.

58.3.5. Zend_Reflection_File

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.

58.3.6. Zend_Reflection_Class

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')

58.3.7. Zend_Reflection_Extension

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.

58.3.8. Zend_Reflection_Function

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.

58.3.9. Zend_Reflection_Method

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.

58.3.10. Zend_Reflection_Parameter

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.

58.3.11. Zend_Reflection_Property

Zend_Reflection_Property sobrescribe un único método para permitir especificar la clase del objeto de reflexión devuelto:

  • getDeclaringClass($reflectionClass = 'Zend_Reflection_Class'): recupera la clase declarante de la propiedad como un objeto de reflexión.