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

    <sect2 id="zend.server.reflection.introduction">
        <title>Introdução</title>

        <para>
            <classname>Zend_Server_Reflection</classname> fornece um mecanismo padrão para executar
            introspecção de função e classe para uso com as classes de servidor. É baseado na
            <acronym>API</acronym> Reflection do <acronym>PHP</acronym> 5, acrescentado com métodos
            para recuperar parâmetros e retornar tipos de valor e descrições, uma lista completa
            dos protótipos de funções e métodos (ex.: todas as possíveis combinações de chamada
            válidas), e as descrições de funções ou métodos.
        </para>

        <para>
            Normalmente, esta funcionalidade só será usada por desenvolvedores de classes de
            servidor para o framework.
        </para>
    </sect2>

    <sect2 id="zend.server.reflection.usage">
        <title>Utilização</title>

        <para>
            O uso básico é simples:
        </para>

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

// Obter protótipos
$prototypes = $reflection->getPrototypes();

// Repetir o laço através de cada protótipo da função
foreach ($prototypes as $prototype) {

    // Obter o tipo de retorno do protótipo
    echo "Tipo de retorno: ", $prototype->getReturnType(), "\n";

    // Get prototype parameters
    $parameters = $prototype->getParameters();

    echo "Parâmetros: \n";
    foreach ($parameters as $parameter) {
        // Obter tipo do parâmetro
        echo "    ", $parameter->getType(), "\n";
    }
}

// Obter namespace para uma classe, função ou método.
// Namespaces podem ser definidos em tempo de instanciação
// (segundo argumento), ou usando setNamespace()
$reflection->getNamespace();
]]></programlisting>

        <para>
            <methodname>reflectFunction()</methodname> retorna um objeto
            <classname>Zend_Server_Reflection_Function</classname>;
            <methodname>reflectClass()</methodname> retorna um objeto
            <classname>Zend_Server_Reflection_Class</classname>. Consulte a documentação da
            <acronym>API</acronym> para ver quais métodos estão disponíveis para cada um.
        </para>
    </sect2>
</sect1>
<!--
vim:se ts=4 sw=4 et:
-->
