Php/docs/function.classkit-method-redefine

提供:Dev Guides
< Php
移動先:案内検索

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_PUBLICCLASSKIT_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!

参考