(PECL runkit >= 0.7.0)
runkit_method_redefine — 指定されたメソッドのコードを動的に変更する
$classname
, string $methodname
, string $args
, string $code
[, int $flags
= RUNKIT_ACC_PUBLIC
] )注意: この関数は、 現在実行中(もしくはチェーンド)のメソッドを操作することはできません。
classname
メソッドを再定義するクラス。
methodname
再定義するメソッドの名前。
args
カンマで区切られた、再定義後のメソッドの引数。
code
methodname
がコールされた際に
評価される、新しいコード。
flags
再定義するメソッドの型。
RUNKIT_ACC_PUBLIC
、
RUNKIT_ACC_PROTECTED
あるいは
RUNKIT_ACC_PRIVATE
のいずれか。
1.0.1 以降では、ビット OR で
RUNKIT_ACC_STATIC
を組み合わせることも可能。
成功した場合に 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!