|
|
@@ -1,5 +1,5 @@
|
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
|
-<!-- EN-Revision: 17409 -->
|
|
|
+<!-- EN-Revision: 17520 -->
|
|
|
<!-- Reviewed: no -->
|
|
|
<sect1 id="zend.xmlrpc.server">
|
|
|
<title>Zend_XmlRpc_Server</title>
|
|
|
@@ -9,10 +9,10 @@
|
|
|
|
|
|
<para>
|
|
|
<classname>Zend_XmlRpc_Server</classname> ist als vollständiger
|
|
|
- XML-RPC Server geplant, der den <ulink
|
|
|
+ <acronym>XML-RPC</acronym> Server geplant, der den <ulink
|
|
|
url="http://www.xmlrpc.com/spec">Spezifikationen auf www.xmlrpc.com</ulink> folgt.
|
|
|
- Des Weiteren implementiert er die Methode system.multicall(), welche dem Entwickler
|
|
|
- erlaubt, mehrere Anfragen aufzureihen.
|
|
|
+ Des Weiteren implementiert er die Methode <command>system.multicall()</command>, welche
|
|
|
+ dem Entwickler erlaubt, mehrere Anfragen aufzureihen.
|
|
|
</para>
|
|
|
</sect2>
|
|
|
|
|
|
@@ -51,7 +51,7 @@ echo $server->handle();
|
|
|
<methodname>Zend_XmlRpc_Server::handle()</methodname> ein
|
|
|
<classname>Zend_XmlRpc_Request</classname>-Objekt übergeben oder es wird ein
|
|
|
<classname>Zend_XmlRpc_Request_Http</classname> instanziert, falls keines angegeben
|
|
|
- wurde - die Anfrage wird also aus <code>php://input</code> geladen.
|
|
|
+ wurde - die Anfrage wird also aus <filename>php://input</filename> geladen.
|
|
|
</para>
|
|
|
|
|
|
<para>
|
|
|
@@ -60,7 +60,7 @@ echo $server->handle();
|
|
|
auszuführen. Es wird entweder ein <classname>Zend_XmlRpc_Response</classname>-
|
|
|
oder ein <classname>Zend_XmlRpc_Server_Fault</classname>-Objekt zurückgegeben.
|
|
|
Beide Objekte besitzen eine Methode <methodname>__toString()</methodname>, die eine
|
|
|
- valide XML-RPC Antwort im <acronym>XML</acronym>-Format zurückgibt,
|
|
|
+ gültige <acronym>XML-RPC</acronym> Antwort im <acronym>XML</acronym>-Format zurückgibt,
|
|
|
die direkt ausgegeben werden kann.
|
|
|
</para>
|
|
|
</sect2>
|
|
|
@@ -69,25 +69,31 @@ echo $server->handle();
|
|
|
<title>Konventionen</title>
|
|
|
<para>
|
|
|
<classname>Zend_XmlRpc_Server</classname> ermöglicht es dem Entwickler, Funktionen und
|
|
|
- Methodenaufrufe als ausführbare XML-RPC Methoden anzufügen. Durch
|
|
|
+ Methodenaufrufe als ausführbare <acronym>XML-RPC</acronym> Methoden anzufügen. Durch
|
|
|
<classname>Zend_Server_Reflection</classname> wird die Überwachung aller angefügten
|
|
|
Methoden - durch Nutzung der DocBlocks der Methoden und Funktionen
|
|
|
werden deren Hilfstexte und Signaturen ermittelt - ermöglicht.
|
|
|
</para>
|
|
|
|
|
|
<para>
|
|
|
- XML-RPC Typen werden nicht zwingend 1:1 zu <acronym>PHP</acronym>
|
|
|
+ <acronym>XML-RPC</acronym> Typen werden nicht zwingend 1:1 zu <acronym>PHP</acronym>
|
|
|
Typen konvertiert. Dennoch wird versucht, einen passenden Typ, anhand der in
|
|
|
@param- und @return-Zeilen enthaltenen Werte, zu ermitteln. Einige
|
|
|
- XML-RPC-Typen besitzen jedoch kein direktes Äquivalent und sollten
|
|
|
- deshalb mittels <acronym>PHP</acronym>doc auf einen XML-RPC-Typen
|
|
|
+ <acronym>XML-RPC</acronym> Typen besitzen jedoch kein direktes Äquivalent und sollten
|
|
|
+ deshalb mittels <acronym>PHP</acronym>doc auf einen <acronym>XML-RPC</acronym> Typen
|
|
|
hinweisen. Diese beinhalten:
|
|
|
</para>
|
|
|
|
|
|
<itemizedlist>
|
|
|
- <listitem><para>dateTime.iso8601, ein String, der das Format
|
|
|
- YYYYMMDDTHH:mm:ss besitzt</para></listitem>
|
|
|
- <listitem><para>base64, base64-kodierte Daten</para></listitem>
|
|
|
+ <listitem>
|
|
|
+ <para>
|
|
|
+ <emphasis><property>dateTime.iso8601</property></emphasis>, ein String, der das
|
|
|
+ Format YYYYMMDDTHH:mm:ss besitzt
|
|
|
+ </para>
|
|
|
+ </listitem>
|
|
|
+
|
|
|
+ <listitem><para><emphasis>base64</emphasis>, base64-kodierte Daten</para></listitem>
|
|
|
+
|
|
|
<listitem><para>struct, jegliches assoziatives Array</para></listitem>
|
|
|
</itemizedlist>
|
|
|
|
|
|
@@ -119,7 +125,7 @@ function myFunc($val1, $val2, $val3)
|
|
|
|
|
|
<para>
|
|
|
Es ist genauso gut möglich, mehrere Werte als Parameter oder für
|
|
|
- die Rückgabe anzugeben; die XML-RPC Spezifikation schlägt sogar
|
|
|
+ die Rückgabe anzugeben; die <acronym>XML-RPC</acronym> Spezifikation schlägt sogar
|
|
|
vor, dass system.methodeSignatur ein Array, das alle möglichen
|
|
|
Methodensignaturen (d.h. jegliche Kombination aus Parametern und
|
|
|
Rückgabewerten) enthält, zurückgibt. Um dies zu erreichen, kann
|
|
|
@@ -144,7 +150,7 @@ function myFunc($val1, $val2, $val3)
|
|
|
<para>
|
|
|
Dennoch eine Anmerkung: Das Erlaubung von vielen Signaturen kann
|
|
|
zu Verwirrung für Entwickler führen, wenn Sie diese Services nutzen;
|
|
|
- man sollte einer XML-RPC Methode deshalb nur eine Signatur zuweisen.
|
|
|
+ man sollte einer <acronym>XML-RPC</acronym> Methode deshalb nur eine Signatur zuweisen.
|
|
|
</para>
|
|
|
</sect2>
|
|
|
|
|
|
@@ -152,11 +158,11 @@ function myFunc($val1, $val2, $val3)
|
|
|
<title>Nutzen von Namensräumen</title>
|
|
|
|
|
|
<para>
|
|
|
- XML-RPC besitzt ein Konzept für Namensräume; Grundlegend erlaubt es
|
|
|
- das Gruppieren von XML-RPC-Methoden durch Punkt-separierte
|
|
|
+ <acronym>XML-RPC</acronym> besitzt ein Konzept für Namensräume; Grundlegend erlaubt es
|
|
|
+ das Gruppieren von <acronym>XML-RPC</acronym> Methoden durch Punkt-separierte
|
|
|
Namensräume. Dies hilft, Namenkollisionen zwischen Methoden, die durch verschiedene
|
|
|
Klassen offeriert werden, zu verhindern. Beispielsweise kann der
|
|
|
- XML-RPC-Server mehrere Methoden im 'system'-Namensraum nutzen:
|
|
|
+ <acronym>XML-RPC</acronym> Server mehrere Methoden im 'system'-Namensraum nutzen:
|
|
|
</para>
|
|
|
|
|
|
<itemizedlist>
|
|
|
@@ -192,14 +198,15 @@ $server->addFunction('somefunc', 'funcs');
|
|
|
Die meiste Zeit wird man einfach den Standard-Anfragetyp
|
|
|
<classname>Zend_XmlRpc_Request_Http</classname>, welcher im
|
|
|
<classname>Zend_XmlRpc_Server</classname> enthalten ist, nutzen. Jedoch gibt es
|
|
|
- gelegentlich Fälle, in denen XML-RPC über die Kommandozeile (CLI),
|
|
|
- ein grafisches Benutzerinterface (GUI), eine andere Umgebung oder beim Protokollieren
|
|
|
- von ankommenden Anfragen erreichbar sein muss. Um dies zu bewerkstelligen, muss man ein
|
|
|
- eigenes Anfrage-Objekt kreieren, das <classname>Zend_XmlRpc_Request</classname>
|
|
|
- erweitert. Die wichtigste Sache, die man sich merken muss, ist sicherzustellen, dass die
|
|
|
- Methoden getMethod() und getParams() implementiert sind, so dass der
|
|
|
- XML-RPC-Server Informationen erhält, die er für das Abfertigen einer
|
|
|
- Anfrage benötigt.
|
|
|
+ gelegentlich Fälle, in denen <acronym>XML-RPC</acronym> über die Kommandozeile
|
|
|
+ (<acronym>CLI</acronym>), ein grafisches Benutzerinterface (<acronym>GUI</acronym>),
|
|
|
+ eine andere Umgebung oder beim Protokollieren von ankommenden Anfragen erreichbar sein
|
|
|
+ muss. Um dies zu bewerkstelligen, muss man ein eigenes Anfrage-Objekt kreieren, das
|
|
|
+ <classname>Zend_XmlRpc_Request</classname> erweitert. Die wichtigste Sache, die man
|
|
|
+ sich merken muss, ist sicherzustellen, dass die Methoden
|
|
|
+ <methodname>getMethod()</methodname> und <methodname>getParams()</methodname>
|
|
|
+ implementiert sind, so dass der <acronym>XML-RPC</acronym> Server Informationen erhält,
|
|
|
+ die er für das Abfertigen einer Anfrage benötigt.
|
|
|
</para>
|
|
|
</sect2>
|
|
|
|
|
|
@@ -210,9 +217,9 @@ $server->addFunction('somefunc', 'funcs');
|
|
|
Ähnlich wie bei den Anfrage-Objekten, kann der <classname>Zend_XmlRpc_Server</classname>
|
|
|
auch eigene Antwortobjekte ausliefern; standardmäßig ist dies ein
|
|
|
<classname>Zend_XmlRpc_Response_Http-Objekt</classname>, das einen passenden
|
|
|
- Content-Type <acronym>HTTP</acronym>-Header sendet, der für XML-RPC
|
|
|
+ Content-Type <acronym>HTTP</acronym>-Header sendet, der für <acronym>XML-RPC</acronym>
|
|
|
genutzt wird. Mögliche Nutzungen eines eigenen Objekts sind z.B. das Protokollieren von
|
|
|
- Antworten oder das Senden der Antworten zu STDOUT.
|
|
|
+ Antworten oder das Senden der Antworten zu <constant>STDOUT</constant>.
|
|
|
</para>
|
|
|
|
|
|
<para>
|
|
|
@@ -227,7 +234,7 @@ $server->addFunction('somefunc', 'funcs');
|
|
|
|
|
|
<para>
|
|
|
<classname>Zend_XmlRpc_Server</classname> fängt die, durch eine ausgeführte Methode
|
|
|
- erzeugten, Exceptions and generiert daraus einen XML-RPC-Fehler als
|
|
|
+ erzeugten, Exceptions and generiert daraus einen <acronym>XML-RPC</acronym> Fehler als
|
|
|
Antwort, wenn eine Exception gefangen wurde. Normalerweise werden die
|
|
|
Exceptionnachrichten und -codes nicht in der Fehler-Antwort genutzt. Dies ist eine
|
|
|
gewollte Entscheidung um den Code zu schützen; viele Exceptions entblößen mehr
|
|
|
@@ -264,7 +271,7 @@ Zend_XmlRpc_Server_Fault::attachFaultException('My_Project_Exception');
|
|
|
<sect2 id="zend.xmlrpc.server.caching">
|
|
|
<title>Zwischenspeichern von Serverdefinitionen zwischen den Anfragen</title>
|
|
|
<para>
|
|
|
- Das Hinzufügen einer Vielzahl von Klassen zu einer XML-RPC-Server
|
|
|
+ Das Hinzufügen einer Vielzahl von Klassen zu einer <acronym>XML-RPC</acronym> Server
|
|
|
Instanz kann zu einem großen Ressourcenverbrauch führen; jede Klasse muss via Reflection
|
|
|
<acronym>API</acronym> (<classname>Zend_Server_Reflection</classname>) inspiziert
|
|
|
werden, welche eine Liste von allen möglichen Signaturen, die der Server verwenden kann,
|
|
|
@@ -273,8 +280,8 @@ Zend_XmlRpc_Server_Fault::attachFaultException('My_Project_Exception');
|
|
|
<para>
|
|
|
Um die Einbußen zu reduzieren, kann <classname>Zend_XmlRpc_Server_Cache</classname>
|
|
|
genutzt werden, welche die Serverdefinitionen zwischen den Anfragen zwischenspeichert.
|
|
|
- Wenn dies mit __autoload() kombiniert wird, kann es zu einem großen
|
|
|
- Geschwindigkeitsschub kommen.
|
|
|
+ Wenn dies mit <methodname>__autoload()</methodname> kombiniert wird, kann es zu einem
|
|
|
+ großen Geschwindigkeitsschub kommen.
|
|
|
</para>
|
|
|
<para>
|
|
|
Ein Beispiel folgt:
|
|
|
@@ -304,7 +311,7 @@ echo $server->handle();
|
|
|
]]></programlisting>
|
|
|
<para>
|
|
|
Obiges Beispiel zeigt, wie der Server versucht, eine Definition
|
|
|
- aus der Datei xmlrpc.cache, welches sich im selben Ordner wie das
|
|
|
+ aus der Datei <property>xmlrpc.cache</property>, welches sich im selben Ordner wie das
|
|
|
Skript befindet, zu laden. Wenn dies nicht erfolgreich ist,
|
|
|
lädt es die Server-Klassen, die es benötigt, und fügt sie zum
|
|
|
Server hinzu. Danach wird versucht, die Cache-Datei mit der
|
|
|
@@ -324,7 +331,7 @@ echo $server->handle();
|
|
|
|
|
|
<para>
|
|
|
Folgendes Beispiel fügt eine Funktion als ausführbare
|
|
|
- XML-RPC-Methode hinzu und verarbeitet eingehende Aufrufe.
|
|
|
+ <acronym>XML-RPC</acronym> Methode hinzu und verarbeitet eingehende Aufrufe.
|
|
|
</para>
|
|
|
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
@@ -350,7 +357,7 @@ echo $server->handle();
|
|
|
|
|
|
<para>
|
|
|
Das nächste Beispiel illustriert, wie man die öffentlichen Methoden
|
|
|
- eienr Klasse als ausführbare XML-RPC-Methoden hinzufügt.
|
|
|
+ eienr Klasse als ausführbare <acronym>XML-RPC</acronym> Methoden hinzufügt.
|
|
|
</para>
|
|
|
|
|
|
<programlisting language="php"><![CDATA[
|