<?xml version="1.0" encoding="UTF-8"?>
<!-- Reviewed: no -->
<!-- EN-Revision: 15157 -->
<sect1 id="zend.server.reflection">
    <title>Zend_Server_Reflection</title>

    <sect2 id="zend.server.reflection.introduction">
        <title>導入</title>

        <para>
            <classname>Zend_Server_Reflection</classname> は、サーバクラス群で
            関数やクラスの内容を知るための標準的な仕組みを提供します。
            PHP 5 のリフレクション API をもとにして拡張したものです。
            パラメータや返り値の型と説明の取得、関数やメソッドのプロトタイプの一覧
            (つまり、すべての呼び出し可能な方法) の取得、関数/メソッド
            の説明の取得なども可能です。
        </para>
        <para>
            この機能は、フレームワーク用のサーバクラス群の開発者のみが使用します。
        </para>
    </sect2>
    <sect2 id="zend.server.reflection.usage">
        <title>使用法</title>

        <para>
            基本的な使用法は簡単です。
        </para>

        <programlisting role="php"><![CDATA[
$class    = Zend_Server_Reflection::reflectClass('My_Class');
$function = Zend_Server_Reflection::reflectFunction('my_function');

// プロトタイプを取得します
$prototypes = $reflection->getPrototypes();

// 各プロトタイプを処理します
foreach ($prototypes as $prototype) {

    // 返り値の型を取得します
    echo "返り値の型: ", $prototype->getReturnType(), "\n";

    // パラメータを取得します
    $parameters = $prototype->getParameters();

    echo "パラメータ: \n";
    foreach ($parameters as $parameter) {
        // パラメータの型を取得します
        echo "    ", $parameter->getType(), "\n";
    }
}

// クラス、関数あるいはメソッドの名前空間を取得します。
// 名前空間は、インスタンス作成時 (二番目の引数) あるいは
// setNamespace() で設定します。
$reflection->getNamespace();
]]></programlisting>

        <para>
            <code>reflectFunction()</code> は
            <classname>Zend_Server_Reflection_Function</classname> オブジェクトを返します。
            <code>reflectClass</code> は
            <classname>Zend_Server_Reflection_Class</classname> オブジェクトを返します。
            これらのオブジェクトで使用できるメソッドについては
            API ドキュメントを参照ください。
        </para>
    </sect2>
</sect1>
<!--
vim:se ts=4 sw=4 et:
-->
