ConFoo 2025

Extensión

Si se deseara crear versiones especializadas de las clases que vienen incorporadas (por ejemplo, para crear HTML en color cuando se exportan, 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 T {
protected function
x() {}
}

/**
* Clase demo #2
*
*/
class U extends T {
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

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top