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

    <sect2 id="zend.server.reflection.introduction">
        <title>Einführung</title>

        <para>
            <classname>Zend_Server_Reflection</classname> stellt einen Standardmechanismus für
            Funktion und Klassen Introspektion für die Verwendung der Serverklassen bereit. Es
            basiert auf der <acronym>PHP</acronym> 5 Reflection <acronym>API</acronym> und erweitert
            diese, um Methoden für die Erhaltung von Parameter und Rückgabewerttypen und
            Beschreibung, eine komplette Liste mit Funktion und Methoden Prototypen (d.h.
            alle möglichen, gültigen Aufrufkombinationen) sowie Funktions- oder
            Methodenbeschreibungen bereit zu stellen.
        </para>

        <para>
            Normalerweise wird diese Funktionalität nur von Entwicklern von Serverklassen für das
            Framework verwendet.
        </para>
    </sect2>

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

        <para>
            Die grundlegende Verwendung ist einfach:
        </para>

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

// Prototypen auslesen
$prototypes = $reflection->getPrototypes();

// Durch jeden Prototyp laufen für die Funktion
foreach ($prototypes as $prototype) {

    // Rückgabe Typ des Prototypen ausgeben
    echo "Rückgabe Typ: ", $prototype->getReturnType(), "\n";

    // Parameter des Prototypen ausgeben
    $parameters = $prototype->getParameters();

    echo "Parameter: \n";
    foreach ($parameters as $parameter) {
        // Parameter Typ ausgeben
        echo "    ", $parameter->getType(), "\n";
    }
}

// Erhalte Namensraum für eine Klasse, Funktion oder Methode.
// Namensräume können zum Zeitpunkt der Instanzierung gesetzt werden
// (zweites Argument) oder durch Verwendung von setNamespace()
$reflection->getNamespace();
]]></programlisting>

        <para>
            <methodname>reflectFunction()</methodname> gibt ein
            <classname>Zend_Server_Reflection_Function</classname> Objekt zurück;
            <methodname>reflectClass()</methodname> gibt ein
            <classname>Zend_Server_Reflection_Class</classname> Objekt zurück. Bitte die
            <acronym>API</acronym> Documentation beachten, um zu erfahren, welche Methoden für beide
            Klassen verfügbar sind.
        </para>
    </sect2>
</sect1>
