API de Reflexión
Otra de las nuevas características de PHP 5 es el API de reflexión. La reflexión es la capacidad de interrogar clases, interfaces, funciones y métodos así como extensiones, lo que puede resultar muy útil cuando nos enfrentamos a clases desconocidas, sin documentar, etcétera.
El API de reflexión es una extensión orientada a objetos para el compilador Zend, consistente de las siguientes clases
<?php
class Reflection { }
interface Reflector { }
class ReflectionException extends Exception { }
class ReflectionFunction implements Reflector { }
class ReflectionParameter implements Reflector { }
class ReflectionMethod extends ReflectionFunction { }
class ReflectionClass implements Reflector { }
class ReflectionObject extends ReflectionClass { }
class ReflectionProperty implements Reflector { }
class ReflectionExtension implements Reflector { }
?>
Aquí podemos ver un ejemplo de interrogación de la clase "IteracionAtributos":
<?php
class IteracionAtributos {
public $var1 = 'Valor 1';
public $var2 = 'Valor 2';
protected $protegida = 'Valor protegido';
private $privada = 'Valor privado';
function IterarAtributos() {
// Muestra todos los pares idAtributo => valor
echo 'IteracionAtributos::IterarAtributos:<br>';
foreach($this as $idAtributo => $valor)
echo "$idAtributo => $valor:<br>";
}
}
$a = new ReflectionClass('IteracionAtributos');
echo "<pre>".$a . "</pre>";
?>
Dando como resultado lo siguiente:
Class [ class IteracionAtributos ] {
@@ C:\wamp\www\sesion08\reflexion\reflexion.php 2-14
- Constants [0] { }
- Static properties [0] { }
- Static methods [0] { }
- Properties [4] {
Property [ public $var1 ]
Property [ public $var2 ]
Property [ protected $protegida ]
Property [ private $privada ]
}
- Methods [1] {
Method [ public method IterarAtributos ] {
@@ C:\wamp\www\sesion08\ejemplos\reflexion.php 8 - 13 }
}
}