# runkit_function_redefine

(PECL runkit >= 0.7.0)

runkit_function_redefine — Replace a function definition with a new implementation

### 说明

runkit_function_redefine ( string `$funcname` , string `$arglist` , string `$code` [, bool `$return_by_reference` = `NULL` [, string `$doc_comment` = `NULL` ]] ) : bool
runkit_function_redefine ( string `$funcname` , Closure `$closure` [, string `$doc_comment` = `NULL` ] ) : bool

> 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

`closure`

  A closure that defines the function.

`return_by_reference`

  Whether the function should return by reference.

`doc_comment`

  The doc comment of the function.

### 返回值

成功时返回 `TRUE`， 或者在失败时返回 `FALSE`。

### 更新日志

版本 | 说明
--- | ---
runkit 1.0.4 | An alternative syntax expecting a `closure` has been added.
runkit 1.0.4 | The optional parameters `return_by_reference` and `doc_comment` have been added.

### 范例

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

### 参见

- runkit_function_add() - Add a new function, similar to create_function
- runkit_function_copy() - Copy a function to a new function name
- runkit_function_rename() - Change a function's name
- runkit_function_remove() - Remove a function definition
- runkit_method_redefine() - Dynamically changes the code of the given method