PHP
downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

classkit_method_copy> <classkit_import
Last updated: Fri, 10 Oct 2008

view this page in

classkit_method_add

(PECL classkit:0.1-0.4 runkit:0.7-0.9)

classkit_method_add指定したクラスに、新しいメソッドを動的に追加する

説明

bool classkit_method_add ( string $classname , string $methodname , string $args , string $code [, int $flags ] )
警告

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

パラメータ

classname

メソッドを追加するクラスの名前。

methodname

追加するメソッドの名前。

args

カンマで区切った、新しいメソッドの引数。

code

methodname がコールされた際に 評価されるコード。

flags

作成するメソッドの型。 CLASSKIT_ACC_PUBLICCLASSKIT_ACC_PROTECTED あるいは CLASSKIT_ACC_PRIVATE のいずれか。

注意: このパラメータは PHP 5 以降でのみ使用されます。なぜなら、それ以前の バージョンでは全てのメソッドが public だからです。

返り値

成功した場合に TRUE を、失敗した場合に FALSE を返します。

例1 classkit_method_add() の例

<?php
class Example {
    function 
foo() {
        echo 
"foo!\n";
    }
}

// Example のオブジェクトを作成
$e = new Example();

// 新しい public メソッドの追加
classkit_method_add(
    
'Example',
    
'add',
    
'$num1, $num2',
    
'return $num1 + $num2;',
    
CLASSKIT_ACC_PUBLIC
);

// 12 + 4 を計算する
echo $e->add(124);
?>

上の例の出力は以下となります。

16



add a note add a note User Contributed Notes
classkit_method_add
Lester
03-Apr-2008 07:54
If you creates methods by using classkit_method_add(), they are not visible in get_class_methods().

class A
{   
       public function foo()
       {
            return "foo!\n";
       }
}

classkit_method_redefine('A','bar','','return "bar !\n";',CLASSKIT_ACC_PUBLIC);

print_r(get_class_methods('A'));
// writes only "foo"

classkit_method_copy> <classkit_import
Last updated: Fri, 10 Oct 2008
 
 
show source | credits | sitemap | contact | advertising | mirror sites