(PECL runkit >= 0.7.0)
runkit_method_redefine — Изменяет код выбранного метода
$classname
, string $methodname
, string $args
, string $code
[, int $flags = RUNKIT_ACC_PUBLIC
[, string $doc_comment = NULL
]] )$classname
, string $methodname
, Closure $closure
[, int $flags = RUNKIT_ACC_PUBLIC
[, string $doc_comment = NULL
]] )Замечание: Эта функция не может быть использована для влияния на работающие в данный момент (или цепные) методы.
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!