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

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

警告

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

パラメータ

classname

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

methodname

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

args

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

code

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

flags

再定義するメソッドの型。 RUNKIT_ACC_PUBLICRUNKIT_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 関数
PHP Manual