ConFoo 2025

Extendendo

Caso queira criar versões especializdas das classes nativas(digamos, para criar HTML colorido quando sendo exportado, tendo variáveis membros de fácil acesso ao invés de métodos ou tendo métodos utilitários), você pode extendê-las.

Exemplo #1 Extendendo classe nativas

<?php
/**
* Minha Classe 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());
}
}

/**
* Demonstração classe #1
*
*/
class T {
protected function
x() {}
}

/**
* Demonstração classe #2
*
*/
class U extends T {
function
x() {}
}

// Imprimir as informações
var_dump(new My_Reflection_Method('U', 'x'));
?>

O exemplo acima produzirá algo semelhante a:

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

Se construtor for sobrescrito, lembre-se de chamar o contrutor pai antes de qualquer código que você adicionar. Se isto não for feito irá resultar no seguinte erro: Fatal error: Internal error: Failed to retrieve the reflection object

adicione uma nota

Notas Enviadas por Usuários (em inglês)

Não há notas de usuários para esta página.
To Top