1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
<?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>
|