そのまんま!
classkit_method_redefine
(PECL)
classkit_method_redefine -- 指定されたメソッドのコードを動的に変更する
説明
bool
classkit_method_redefine ( string classname, string methodname, string args, string code [, int flags] )
注意: この関数により現在実行中
(もしくはチェーンド)のメソッドを操作することはできません。
警告 |
この関数は、
実験的 なものです。この関数の動作・
名前・その他ドキュメントに書かれている事項は、予告なく、将来的な PHP
のリリースにおいて変更される可能性があります。
この関数は自己責任で使用してください。 |
パラメータ
classname
メソッドを再定義するクラス。
methodname
再定義するメソッドの名前。
args
カンマで区切られた、再定義後のメソッドの引数。
code
methodname
がコールされた際に
評価される、新しいコード。
flags
再定義するメソッドの型。
CLASSKIT_ACC_PUBLIC、
CLASSKIT_ACC_PROTECTED あるいは
CLASSKIT_ACC_PRIVATE のいずれか。
注意:
このパラメータは PHP 5 以降でのみ使用されます。なぜなら、それ以前の
バージョンでは全てのメソッドが public だからです。
返り値
成功した場合に TRUE を、失敗した場合に FALSE を返します。
例
例 1. classkit_method_redefine() の例
<?php class Example { function foo() { return "foo!\n"; } }
// Example オブジェクトの作成 $e = new Example();
// Example::foo() の出力(再定義前) echo "Before: " . $e->foo();
// 'foo' メソッドの再定義 classkit_method_redefine( 'Example', 'foo', '', 'return "bar!\n";', CLASSKIT_ACC_PUBLIC );
// Example::foo() の出力(再定義後) echo "After: " . $e->foo(); ?>
|
上の例の出力は以下となります。 |