<sect1 id="zend.server.reflection">
    <title>Zend_Server_Reflection</title>

    <sect2 id="zend.server.reflection.introduction">
        <title>Введение</title>

        <para>
            <code>Zend_Server_Reflection</code> предоставляет стандарный
            механизм для выполнения интроспекции функций и классов для
            использования с серверными классами. Он основан на Reflection API
            в PHP 5 и расширяет его для предоставления методов
            получения типов и описаний параметров и возвращаемых значений,
            полного списка прототипов функций и методов (т.е. комбинации всех
            возможных валидных вызовов), описаний функций/методов.
<!--
            Zend_Server_Reflection provides a standard mechanism for performing
            function and class introspection for use with server classes. It is
            based on PHP 5's Reflection API, and extends it to provide methods
            for retrieving parameter and return value types and descriptions, a
            full list of function and method prototypes (i.e., all possible
            valid calling combinations), and function/method descriptions.
-->
        </para>
        <para>
            Обычно этот функционал будет использоваться только разработчиками
            серверных классов для данного фреймворка.
<!--
            Typically, this functionality will only be used by developers of
            server classes for the framework.
-->
        </para>
    </sect2>
    <sect2 id="zend.server.reflection.usage">
        <title>Использование</title>

        <para>
            Основное использование простое:
<!--
            Basic usage is simple:
-->
        </para>

        <programlisting language="php"><![CDATA[<?php
require_once 'Zend/Server/Reflection.php';
$class    = Zend_Server_Reflection::reflectClass('My_Class');
$function = Zend_Server_Reflection::reflectFunction('my_function');

// Получение прототипов
$prototypes = $reflection->getPrototypes();

// Обход полученных прототипов
foreach ($prototypes as $prototype) {

    // Получение типа возращаемого прототипом значения
    echo "Return type: ", $prototype->getReturnType(), "\n";

    // Получение параметров прототипа
    $parameters = $prototype->getParameters();

    echo "Parameters: \n";
    foreach ($parameters as $parameter) {
        // Получение типа параметра
        echo "    ", $parameter->getType(), "\n";
    }
}

// Получение пространства имен для класса, функции или метода
// Пространства имен могут быть установлены во время инстанцирования (второй аргумент),
// или с помощью метода setNamespace()
$reflection->getNamespace();
]]></programlisting>

        <para>
            <code>reflectFunction()</code> возвращает объект
            <code>Zend_Server_Reflection_Function</code>,
            <code>reflectClass</code> возвращает объект
            <code>Zend_Server_Reflection_Class</code>. Обратитесь к
            документации API чтобы узнать, какие методы доступны в
            этих объектах.
<!--
            <code>reflectFunction()</code> returns a
            <code>Zend_Server_Reflection_Function</code> object;
            <code>reflectClass</code> returns a
            <code>Zend_Server_Reflection_Class</code> object. Please refer to
            the API documentation to know what methods are available to each.
-->
        </para>
    </sect2>
</sect1>
<!--
vim:se ts=4 sw=4 et:
-->
