PHP8 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
定义该方法的闭包。
flags
重新定义的方法可以是
RUNKIT7_ACC_PUBLIC
、RUNKIT7_ACC_PROTECTED
或RUNKIT7_ACC_PRIVATE
,可选择通过按位OR与RUNKIT7_ACC_STATIC
组合。doc_comment
方法的文档注释。
return_type
方法的返回类型。
is_strict
方法是否表现得像在具有
strict_types=1
的文件中声明的方法。
返回值
成功时返回 true, 或者在失败时返回 false。
示例
示例 #1 runkit7_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
runkit7_method_redefine(
'Example',
'foo',
'',
'return "bar!\n";',
RUNKIT7_ACC_PUBLIC
);
// output Example::foo() (after redefine)
echo "After: " . $e->foo();
?>
以上示例会输出:
Before: foo!
After: bar!
参见
- runkit7_method_add() - 动态添加新的方法到指定类
- runkit7_method_copy() - 从一个类复制方法到另一个类
- runkit7_method_remove() - 动态移除给定方法
- runkit7_method_rename() - 动态更改给定方法的名称
- runkit7_function_redefine() - 用新的实现替换函数定义