runkit_method_redefine

(PECL runkit >= 0.7.0)

runkit_method_redefineИзменяет код выбранного метода

Описание

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

Замечание: Эта функция не может быть использована для влияния на работающие в данный момент (или цепные) методы.

Список параметров

classname

Имя класса, в котором заменяется метод

methodname

Имя заменяемого метода

args

Список параметров, принимаемых методом через запятую

code

Новый код метода, который выполнится при вызове methodname

closure

Функция определяющая замыкание (closure).

flags

Переназначаемый метод может быть RUNKIT_ACC_PUBLIC, RUNKIT_ACC_PROTECTED или RUNKIT_ACC_PRIVATE опционально в комбинации через побитовое ИЛИ с RUNKIT_ACC_STATIC (начиная с версии 1.0.1)

doc_comment

Документирующий комментарий к функции.

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Список изменений

Версия Описание
runkit 1.0.4 Добавлен альтернативный синтаксис с использованием замыканий (closure).
runkit 1.0.4 Был добавлен необязательный параметр doc_comment.

Примеры

Пример #1 Пример для runkit_method_redefine()

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

// создаем экзепаляр Example
$e = new Example();

// вывод Example::foo() (до переназначения)
echo "Before: " $e->foo();

// переназначаем метод 'foo'
runkit_method_redefine(
    
'Example',
    
'foo',
    
'',
    
'return "bar!\n";',
    
RUNKIT_ACC_PUBLIC
);

// вывод Example::foo() (после переназначения)
echo "After: " $e->foo();
?>

Результат выполнения данного примера:

Before: foo!
After: bar!

Смотрите также