<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 14978 -->
<!-- Reviewed: no -->
<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 PHP 5
            Reflection API und erweitert es, 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- und
            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 role="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>
            <code>reflectFunction()</code> gibt ein  <classname>Zend_Server_Reflection_Function</classname>
            Objekt zurück; <code>reflectClass</code> gibt ein <classname>Zend_Server_Reflection_Class</classname>
            Objekt zurück. Bitte die API Documentation beachten, um zu erfahren, welche Methoden
            für beide Klassen verfügbar sind.
        </para>
    </sect2>
</sect1>
<!--
vim:se ts=4 sw=4 et:
-->
