runkit7_method_redefine

(PECL runkit7 >= Unknown)

runkit7_method_redefineДинамически изменяет код заданного метода

Описание

runkit7_method_redefine(
    string $class_name,
    string $method_name,
    string $argument_list,
    string $code,
    int $flags = RUNKIT7_ACC_PUBLIC,
    string $doc_comment = null,
    string $return_type = ?,
    bool $is_strict = ?
): bool
runkit7_method_redefine(
    string $class_name,
    string $method_name,
    Closure $closure,
    int $flags = RUNKIT7_ACC_PUBLIC,
    string $doc_comment = null,
    string $return_type = ?,
    bool $is_strict = ?
): bool

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

class_name
Класс, в котором нужно переопределить метод.
method_name
Имя метода, который нужно переопределить.
argument_list
Разделённый запятыми список аргументов для переопределённого метода.
code
Новый код, который будет выполняться при вызове method_name.
closure
Замыкание (closure), определяющее метод.
flags
Переопределённый метод может быть RUNKIT7_ACC_PUBLIC, RUNKIT7_ACC_PROTECTED или RUNKIT7_ACC_PRIVATE, и, при необходимости, объединён с помощью побитового ИЛИ с RUNKIT7_ACC_STATIC.
doc_comment
Документальный комментарий метода.
return_type
Тип возвращаемого значения метода.
is_strict
Определяет, будет ли метод вести себя так, как если бы он был объявлен в файле с strict_types=1.

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

Функция возвращает true, если выполнилась успешно, или false, если возникла ошибка.

Примеры

Пример #1 Пример использования runkit7_method_redefine()

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

// создание объекта Example
$e = new Example();

// вывод Example::foo() (до переопределения)
echo "До: " . $e->foo();

// Переопределение метода 'foo'
runkit7_method_redefine(
'Example',
'foo',
'',
'return "bar!\n";',
RUNKIT7_ACC_PUBLIC
);

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

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

До: foo!
После: bar!

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

Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top