Hatena::ブログ(Diary)

kotori@notes

2009-05-06

PHPのリフレクションってどうなんだろ

| 03:22 |

PHPのリフレクションって使われてるのかな。PHPのマニュアルでもわかりづらい場所に解説があって、決して重要視されてる感じがしない。

ちなみに、karintoではメソッドの引数の個数に応じてkarinto_sessionのインスタンスを生成するかどうかを判断している箇所があって(karintoクラスのrunメソッド)、そこでだけリフレクションを使ってる。

<?php
if (method_exists($page, $method_name)) {
    $ref = new ReflectionMethod($page_name, $method_name);
    if ($ref->getNumberOfParameters() < 3) {
        $ref->invoke($page, $req, $res);
    } else {
        $session = new karinto_session($res);
        $ref->invoke($page, $req, $res, $session);
    }
}

便利と言えば便利なんだけど、元々PHPにはcall_user_funcとかproperty_existsとかクラス・関数操作用の関数群があるので、余程の事情がない限りリフレクションを使う機会って多くない気がする。

irokirok 2009/05/11 00:47 phpdocコメントをアノテーションとするために使ってます。

hiro_yhiro_y 2009/05/11 10:54 フレームワークとかライブラリを作る場合は割と使う感じですよね。
一般のコードではまずお目にかからないかな…と思ってたり。

トラックバック - http://d.hatena.ne.jp/hiro_y/20090506/1241547733