Reflexión
PHP Manual

Extensión

Si se deseara crear versiones especializadas de las clases que vienen incorporadas (por ejemplo, para crear HTML en color cuando se experto, parar tener variables de acceso rápido en lugar de usar métodos, o parar crear métodos auxiliares), deberá extender la clase.

Ejemplo #1 Extendiendo las clases incorporadas

<?php
/**
 * Mi clase Reflection_Method
 */
class My_Reflection_Method extends ReflectionMethod
{
    public 
$visibility = array();

    public function 
__construct($o$m)
    {
        
parent::__construct($o$m);
        
$this->visibility Reflection::getModifierNames($this->getModifiers());
    }
}

/**
 * Clase demo #1
 *
 */
class {
    protected function 
x() {}
}

/**
 * Clase demo #2
 *
 */
class extends {
    function 
x() {}
}

// Mostrar información
var_dump(new My_Reflection_Method('U''x'));
?>

El resultado del ejemplo sería algo similar a:

object(My_Reflection_Method)#1 (3) {
  ["visibility"]=>
  array(1) {
    [0]=>
    string(6) "public"
  }
  ["name"]=>
  string(1) "x"
  ["class"]=>
  string(1) "U"
}
Precaución

Si se sobrescribe el constructor, no hay que olvidar llamar en primer lugar al constructor de la clase padre. Si esto fallara, se lanzará el siguiente error: Fatal error: Internal error: Failed to retrieve the reflection object


Reflexión
PHP Manual