classkit_method_redefine

(PECL classkit >= 0.1)

classkit_method_redefineCambia dinámicamente el código del método dado

Descripción

classkit_method_redefine ( string $classname , string $methodname , string $args , string $code [, int $flags = CLASSKIT_ACC_PUBLIC ] ) : bool

Nota: Esta función no puede ser utilizada para manipular el actual método en ejecución (o extendido).

Advertencia

Esta función ha sido declarada EXPERIMENTAL. Su funcionamiento, nombre y la documentación que le acompaña puede cambiar sin previo aviso en futuras versiones de PHP. Utilícela bajo su propia responsabilidad.

Parámetros

classname

La clase el la que se va a redefinir el método

methodname

El nombre del método a redefinir

args

Lista de argumentos separados por coma para el método redefinido

code

El nuevo código a ser evaluado cuando methodname es llamado

flags

El método redefinido puede ser CLASSKIT_ACC_PUBLIC, CLASSKIT_ACC_PROTECTED o CLASSKIT_ACC_PRIVATE

Nota:

Este parámetro sólo se usa a partir de PHP 5, ya que, antes de esta versión, todos los métodos eran públicos.

Valores devueltos

Devuelve TRUE en caso de éxito o FALSE en caso de error.

Ejemplos

Ejemplo #1 Ejemplo de classkit_method_redefine()

<?php
class Ejemplo {
    function 
foo() {
        return 
"foo!\n";
    }
}

// crear un objeto de Ejemplo
$e = new Ejemplo();

// imprimir Ejemplo::foo() (antes de redefinir)
echo "Antes: " $e->foo();

// Redefinir el método 'foo'
classkit_method_redefine(
    
'Ejemplo',
    
'foo',
    
'',
    
'return "bar!\n";',
    
CLASSKIT_ACC_PUBLIC
);

// imprimir Ejemplo::foo() (después de redefinir)
echo "Después: " $e->foo();
?>

El resultado del ejemplo sería:

Antes: foo!
Después: bar!

Ver también