©
This document uses PHP Chinese website manual Release
(PECL runkit >= 0.7.0)
runkit_function_redefine — Replace a function definition with a new implementation
$funcname
, string $arglist
, string $code
)Note: 默认情况下,仅在用户空间可删除,重命名,或者修改函数。为了覆盖内部函数,必须启用 php.ini 中的 runkit.internal_override 设置。
funcname
Name of function to redefine
arglist
New list of arguments to be accepted by function
code
New code implementation
成功时返回 TRUE
, 或者在失败时返回 FALSE
。
Example #1 A runkit_function_redefine() example
<?php
function testme () {
echo "Original Testme Implementation\n" ;
}
testme ();
runkit_function_redefine ( 'testme' , '' , 'echo "New Testme Implementation\n";' );
testme ();
?>
以上例程会输出:
Original Testme Implementation New Testme Implementation
[#1] lucato at gmail dot com [2011-12-25 16:10:43]
Note to users: language constructs (eval, die, exit, isset, unset, echo etc.) which might be confused with functions, cannot be renamed or redefined even with runkit.internal_override.
[#2] corentin dot delorme at linagora dot com [2007-09-05 06:04:08]
Here is another example with a parameter:
<?php
function hello_world($word) {
echo "Original Hello World: $word\n</br>";
}
$helloWorld = 'echo "Redefined Hello World: $word\n</br>";';
hello_world('test1');
runkit_function_redefine('hello_world', '$word', $helloWorld);
hello_world('test2');
?>