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

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

        <para>
            <classname>Zend_Server_Reflection</classname> fournit un mécanisme standard pour
            exécuter l'introspection de fonction et de classe pour utiliser avec des classes
            serveur. Il est basé sur l'API de réflexion de <acronym>PHP</acronym> 5, et l'améliore pour fournir des
            méthodes de recherche des types et des descriptions de paramètre et de valeur de retour,
            une liste complète des prototypes de fonction et de méthode (c.-à-d., toutes les
            combinaisons d'appels valides possibles), et des descriptions de
            fonction/méthode.
        </para>

        <para>
            Typiquement, cette fonctionnalité sera seulement utilisée par les développeurs des
            classes serveur pour le framework.
        </para>
    </sect2>

    <sect2 id="zend.server.reflection.usage">
        <title>Utilisation</title>

        <para>L'utilisation de base est simple :</para>

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

// Récupère les prototypes
$prototypes = $reflection->getPrototypes();

// Parcoure chaque prototype pour une fonction
foreach ($prototypes as $prototype) {

    // Récupère les prototypes des types de retour
    echo "Return type: ", $prototype->getReturnType(), "\n";

    // Récupère les paramètres
    $parameters = $prototype->getParameters();

    echo "Paramètres: \n";
    foreach ($parameters as $parameter) {
        // Récupère le type d'un paramètre
        echo "    ", $parameter->getType(), "\n";
    }
}

// Récupère l'espace de noms d'une classe, d'une fonction, ou d'une méthode.
// Les espaces de noms peuvent être définis au moment de l'instanciation
// (deuxième argument), ou en utilisant setNamespace()
$reflection->getNamespace();
]]></programlisting>

        <para>
            <methodname>reflectFunction()</methodname> retourne un objet
            <classname>Zend_Server_Reflection_Function</classname>. <code>reflectClass</code>
            retourne un objet <classname>Zend_Server_Reflection_Class</classname>. Veuillez vous
            référer à la documentation d'API pour voir quelles méthodes sont disponibles pour
            chacun.
        </para>
    </sect2>
</sect1>