runkit_method_copy
runkit_method_remove
runkit 関数
PHP Manual

# 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 ] )

> 注意: この関数は、 現在実行中(もしくはチェーンド)のメソッドを操作することはできません。

警告

この関数は、 実験的 なものです。この関数の動作・ 名前・その他ドキュメントに書かれている事項は、予告なく、将来的な PHP のリリースにおいて変更される可能性があります。 この関数は自己責任で使用してください。

### パラメータ

`classname`

  メソッドを再定義するクラス。

`methodname`

  再定義するメソッドの名前。

`args`

  カンマで区切られた、再定義後のメソッドの引数。

`code`

  `methodname` がコールされた際に 評価される、新しいコード。

`flags`

  再定義するメソッドの型。 `RUNKIT_ACC_PUBLIC`、 `RUNKIT_ACC_PROTECTED` あるいは `RUNKIT_ACC_PRIVATE` のいずれか。

  > 注意: このパラメータは PHP 5 以降でのみ使用されます。なぜなら、それ以前の バージョンでは全てのメソッドが public だからです。

### 返り値

成功した場合に `TRUE` を、失敗した場合に `FALSE` を返します。

### 例

例1 runkit_method_redefine() の例

`<?php
class Example {
function foo() {
return "foo!\n";
}
}
// Example オブジェクトの作成
$e = new Example();
// Example::foo() の出力（再定義前）
echo "Before: " . $e->foo();
// 'foo' メソッドの再定義
runkit_method_redefine(
'Example',
'foo',
'',
'return "bar!\n";',
RUNKIT_ACC_PUBLIC
);
// Example::foo() の出力（再定義後）
echo "After: " . $e->foo();
?>`

上の例の出力は以下となります。

    Before: foo!
    After: bar!

### 参考

- runkit_method_add() - 指定したクラスに、新しいメソッドを動的に追加する
- runkit_method_copy() - あるクラスのメソッドを別のクラスにコピーする
- runkit_method_remove() - 指定したメソッドを動的に削除する
- runkit_method_rename() - 指定したメソッドの名前を動的に変更する
- runkit_function_redefine() - 関数の定義を新しい実装で置き換える

runkit_method_copy
runkit_method_remove
runkit 関数
PHP Manual