runkit_method_redefine

(PECL runkit >= 0.7.0)

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

Descripción

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

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

Parámetros

classname

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

methodname

El nombre del método a redefinir

args

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

code

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

flags

El método redefinido puede ser RUNKIT_ACC_PUBLIC, RUNKIT_ACC_PROTECTED o RUNKIT_ACC_PRIVATE opcionalmente combinado mediante OR de bits con RUNKIT_ACC_STATIC (desde 1.0.1)

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 runkit_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'
runkit_method_redefine(
    
'Ejemplo',
    
'foo',
    
'',
    
'return "bar!\n";',
    
RUNKIT_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