(PECL runkit >= 0.7.0)
runkit_method_redefine — Dynamically changes the code of the given method
$classname
   , string $methodname
   , string $args
   , string $code
   [, int $flags = RUNKIT_ACC_PUBLIC
  ] )Note: This function cannot be used to manipulate the currently running (or chained) method.
classnameThe class in which to redefine the method
methodnameThe name of the method to redefine
argsComma-delimited list of arguments for the redefined method
code
       The new code to be evaluated when methodname
       is called
      
flags
       The redefined method can be
       RUNKIT_ACC_PUBLIC,
       RUNKIT_ACC_PROTECTED or
       RUNKIT_ACC_PRIVATE optionally combined via bitwise OR with
       RUNKIT_ACC_STATIC (since 1.0.1)
      
Note:
This parameter is only used as of PHP 5, because, prior to this, all methods were public.
   Returns TRUE on success or FALSE on failure.
  
Example #1 runkit_method_redefine() example
<?php
class Example {
    function foo() {
        return "foo!\n";
    }
}
// create an Example object
$e = new Example();
// output Example::foo() (before redefine)
echo "Before: " . $e->foo();
// Redefine the 'foo' method
runkit_method_redefine(
    'Example',
    'foo',
    '',
    'return "bar!\n";',
    RUNKIT_ACC_PUBLIC
);
// output Example::foo() (after redefine)
echo "After: " . $e->foo();
?>
The above example will output:
Before: foo! After: bar!