runkit_method_redefine
runkit_method_redefine
(PECL runkit >= 0.7.0)
runkit_method_redefine - 动态更改给定方法的代码
描述
bool 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 ]] )
注意
:此函数不能用于操作当前正在运行的(或链接的)方法。
参数
classname
重新定义方法的类
methodname
要重新定义的方法的名称
args
重定义方法的逗号分隔参数列表
code
methodname
调用时要评估的新代码
closure
定义方法的闭包。
flags
重新定义的方法可以是RUNKIT_ACC_PUBLIC
,RUNKIT_ACC_PROTECTED
或RUNKIT_ACC_PRIVATE
任选地通过位或具有组合RUNKIT_ACC_STATIC
(自1.0.1)
doc_comment
函数的doc评论。
返回值
成功返回TRUE
或失败时返回FALSE
。
更新日志
版 | 描述 |
---|---|
runkit 1.0.4 | 期望封闭的另一种语法已被添加。 |
runkit 1.0.4 | 可选参数doc_comment已添加。 |
例子
Example #1 runkit
_
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
runkit_method_redefine(
'Example',
'foo',
'',
'return "bar!\n";',
RUNKIT_ACC_PUBLIC
// output Example::foo() (after redefine)
echo "After: " . $e->foo(
?>
上面的例子将输出:
Before: foo!
After: bar!
← runkit_method_copy
runkit_method_remove →