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 }
   }
}

results matching ""

    No results matching ""