Zend_Reflectionサンプル

例661 ファイルでreflectionを実行

$r = new Zend_Reflection_File($filename);
printf(
    "===> The %s file\n".
    "     has %d lines\n",
    $r->getFileName(),
    $r->getEndLine()
);

$classes = $r->getClasses();
echo "     It has " . count($classes) . ":\n";
foreach ($classes as $class) {
    echo "         " . $class->getName() . "\n";
}

$functions = $r->getFunctions();
echo "     It has " . count($functions) . ":\n";
foreach ($functions as $function) {
    echo "         " . $function->getName() . "\n";
}

例662 クラスでreflectionを実行

$r = new Zend_Reflection_Class($class);

printf(
    "クラスレベルのdocblockの短い記述: %s\n".
    "クラスレベルのdocblockの長い記述:\n%s\n",
    $r->getDocblock()->getShortDescription(),
    $r->getDocblock()->getLongDescription(),
);

//宣言するファイルreflectionを取得
$file = $r->getDeclaringFile();

例663 メソッドでreflectionを実行

$r = new Zend_Reflection_Method($class, $name);

printf( "Method '%s':\n", $r->getName());

foreach ($r->getParameters() as $key => $param) {
    printf(
        "Param at position '%d' is of type '%s'\n",
        $key,
        $param->getType()
    );
}

例664 docblockでreflectionを実行

$r = new Zend_Reflection_Method($class, $name);
$docblock = $r->getDocblock();

printf(
    "短い記述: %s\n".
    "長い記述:\n%s\n",
    $r->getDocblock()->getShortDescription(),
    $r->getDocblock()->getLongDescription(),
);

foreach ($docblock->getTags() as $tag) {
    printf(
        "Annotation tag '%s' has the description '%s'\n",
        $tag->getName(),
        $tag->getDescription()
    );
}