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

# runkit7_method_redefine

(PECL runkit7 >= Unknown)

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

### Описание

function 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
function 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!

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

- runkit7_method_add() - Динамически добавляет новый метод в заданный класс
- runkit7_method_copy() - Копирует метод из одного класса в другой
- runkit7_method_remove() - Динамически удаляет заданный метод
- runkit7_method_rename() - Динамически изменяет имя заданного метода
- runkit7_function_redefine() - Заменяет определение функции новой реализацией

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open