classkit_method_redefine
(PECL classkit >= 0.1)
classkit_method_redefine — 指定されたメソッドのコードを動的に変更する
説明
classkit_method_redefine
( string $classname
, string $methodname
, string $args
, string $code
[, int $flags
= CLASSKIT_ACC_PUBLIC
] ) : bool
注意:
この関数により現在実行中(もしくはチェーンド)のメソッドを操作することはできません。
警告 この関数は、 実験的 なものです。この関数の動作・ 名前・その他ドキュメントに書かれている事項は、予告なく、将来的な 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() の例
<?phpclass 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();?>
上の例の出力は以下となります。
Before: foo! After: bar!
参考
- classkit_method_add() - 指定したクラスに、新しいメソッドを動的に追加する
- classkit_method_copy() - あるクラスのメソッドを別のクラスにコピーする
- classkit_method_remove() - 指定したメソッドを動的に削除する
- classkit_method_rename() - 指定したメソッドの名前を動的に変更する