[MANUAL] German:
[zend.git] / documentation / manual / de / module_specs / Zend_Soap_Server.xml
blobaa47c1d2569b12d4929fe9a2f45aaa9fc620973c
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- EN-Revision: 21824 -->
3 <!-- Reviewed: no -->
4 <sect1 id="zend.soap.server">
5     <title>Zend_Soap_Server</title>
7     <para>
8         Die <classname>Zend_Soap_Server</classname> Klasse ist dazu gedacht den Web Service Teil der
9         Entwicklung für <acronym>PHP</acronym> Programmierer zu vereinfachen.
10     </para>
12     <para>
13         Sie kann in WSDL oder nicht-WSDL Modus verwendet werden, und verwendet Klassen oder
14         Funktionen um eine Web Service <acronym>API</acronym> zu definieren.
15     </para>
17     <para>
18         Wenn die <classname>Zend_Soap_Server</classname> Komponente im WSDL Modus arbeitet,
19         verwendet Sie ein bereits vorbereitetes WSDL Dokument um das Verhalten des Server Objekts
20         und die Optionen des Transport Layers zu definieren.
21     </para>
23     <para>
24         Ein WSDL Dokument kann automatisch erzeugt werden mit der Funktionalität die von der <link
25             linkend="zend.soap.autodiscovery.introduction">Zend_Soap_AutoDiscovery Komponente</link>
26         angeboten wird sollte händisch erzeugt werden durch Verwendung der <link
27             linkend="zend.soap.wsdl"><classname>Zend_Soap_Wsdl</classname> Klasse</link> oder
28         irgendeinem anderen <acronym>XML</acronym> Erstellungstool.
29     </para>
31     <para>
32         Wenn der nicht-WSDL Modus verwendet wird, müssen alle Protokoll-Optionen gesetzt werden
33         indem der Options-Mechanismus verwendet wird.
34     </para>
36     <sect2 id="zend.soap.server.constructor">
37         <title>Der Zend_Soap_Server Konstruktor</title>
39         <para>
40             Der Contructor von <classname>Zend_Soap_Server</classname> sollte für WSDL und
41             nicht-WSDL Modi unterschiedlich verwendet werden.
42         </para>
44         <sect3 id="zend.soap.server.constructor.wsdl_mode">
45             <title>Der Zend_Soap_Server Konstruktor für den WSDL Modus</title>
47             <para>
48                 Der <classname>Zend_Soap_Server</classname> Konstruktor nimmt zwei optionale
49                 Parameter wenn er im WSDL Modus arbeitet:
51                 <orderedlist>
52                     <listitem>
53                         <para>
54                             <varname>$wsdl</varname>, welcher eine <acronym>URI</acronym> einer
55                             WSDL Datei ist
57                             <footnote>
58                                 <para>
59                                     Kann später gesetzt werden durch Verwendung der
60                                     <methodname>setWsdl($wsdl)</methodname> Methode.
61                                 </para>
62                             </footnote>.
63                         </para>
64                     </listitem>
66                     <listitem>
67                         <para>
68                             <varname>$options</varname> - Optionen für die Erstellung eines
69                             <acronym>SOAP</acronym> Server Objektes
71                             <footnote>
72                                 <para>
73                                     Optionen können durch Verwendung der
74                                     <methodname>setOptions($options)</methodname> Methode später
75                                     gesetzt werden.
76                                 </para>
77                             </footnote>.
78                         </para>
80                         <para>
81                             Die folgenden Optionen werden im WSDL Modus erkannt:
83                             <itemizedlist>
84                                 <listitem>
85                                     <para>
86                                         'soap_version' ('soapVersion') - Die zu verwendende SOAP
87                                         Version (SOAP_1_1 or <acronym>SOAP</acronym>_1_2).
88                                     </para>
89                                 </listitem>
91                                 <listitem>
92                                     <para>
93                                         'actor' - Die Aktions-<acronym>URI</acronym> für den Server.
94                                     </para>
95                                 </listitem>
97                                 <listitem>
98                                     <para>
99                                         'classmap' ('classMap') welche verwendet werden kann um
100                                         einige WSDL Typen auf <acronym>PHP</acronym> Klassen zu
101                                         mappen.
102                                     </para>
104                                     <para>
105                                         Die Option muß ein Array mit WSDL Typen als Schlüssel und
106                                         Namen von <acronym>PHP</acronym> Klassen als Werte sein.
107                                     </para>
108                                 </listitem>
110                                 <listitem>
111                                     <para>
112                                         'encoding' - Interne Zeichen Kodierung (UTF-8 wird immer als
113                                         externe Kodierung verwendet).
114                                     </para>
115                                 </listitem>
117                                 <listitem>
118                                     <para>
119                                         'wsdl' welcher dem Aufruf von
120                                         <methodname>setWsdl($wsdlValue)</methodname> entspricht.
121                                     </para>
122                                 </listitem>
123                             </itemizedlist>
124                         </para>
125                     </listitem>
126                 </orderedlist>
127             </para>
128         </sect3>
130         <sect3 id="zend.soap.server.wsdl_mode">
131             <title>Der Zend_Soap_Server Konstruktor für den nicht-WSDL Modus</title>
133             <para>
134                 Der erste Parameter des Konstruktors <emphasis>muß</emphasis> auf
135                 <constant>NULL</constant> gesetzt werden wenn man plant die Funktionalität von
136                 <classname>Zend_Soap_Server</classname> im nicht-WSDL Modus zu verwenden.
137             </para>
139             <para>
140                 Man muß in diesem Fall auch die 'uri' Option setzen (siehe anbei).
141             </para>
143             <para>
144                 Der zweite Parameter des Konstruktors (<varname>$options</varname>) ist ein Array
145                 mit Optionen um ein <acronym>SOAP</acronym> Server Objekt zu erstellen
147                 <footnote>
148                     <para>
149                         Optionen können später gesetzt werden indem die
150                         <methodname>setOptions($options)</methodname> Methode verwendet wird.
151                     </para>
152                 </footnote>.
153             </para>
155             <para>
156                 Die folgenden Optionen werden im nicht-WSDL Modus erkannt:
158                 <itemizedlist>
159                     <listitem>
160                         <para>
161                             'soap_version' ('soapVersion') - Die zu verwendende SOAP Version
162                             (SOAP_1_1 or <acronym>SOAP</acronym>_1_2).
163                         </para>
164                     </listitem>
166                     <listitem>
167                         <para>
168                             'actor' - Die Aktions-<acronym>URI</acronym> für den Server.
169                         </para>
170                     </listitem>
172                     <listitem>
173                         <para>
174                             'classmap' ('classMap') welche verwendet werden kann um einige WSDL
175                             Typen auf <acronym>PHP</acronym> Klassen zu mappen.
176                         </para>
178                         <para>
179                             Die Option muß ein Array mit WSDL Typen als Schlüssel und Namen von
180                             <acronym>PHP</acronym> Klassen als Werte sein.
181                         </para>
182                     </listitem>
184                     <listitem>
185                         <para>
186                             'encoding' - Interne Zeichen Kodierung (UTF-8 wird immer als externe
187                             Kodierung verwendet).
188                         </para>
189                     </listitem>
191                     <listitem>
192                         <para>
193                             'uri' (benötigt) - <acronym>URI</acronym> Namespace für den
194                             <acronym>SOAP</acronym> Server.
195                         </para>
196                     </listitem>
197                 </itemizedlist>
198             </para>
199         </sect3>
200     </sect2>
202     <sect2 id="zend.soap.server.api_define_methods">
203         <title>Methoden um eine Web Service API zu definieren</title>
205         <para>
206             Es gibt zwei Wege um eine Web Service <acronym>API</acronym> zu definieren wenn man
207             Zugriff auf den eigenen <acronym>PHP</acronym> Code über <acronym>SOAP</acronym> geben
208             will.
209         </para>
211         <para>
212             Der Erste ist das Anfügen einer Klasse zum <classname>Zend_Soap_Server</classname>
213             Objekt welche eine Web Service <acronym>API</acronym> komplett beschreibt:
214             <programlisting language="php"><![CDATA[
216 class MyClass {
217     /**
218      * Diese Methode nimmt ...
219      *
220      * @param integer $inputParam
221      * @return string
222      */
223     public function method1($inputParam) {
224         ...
225     }
227     /**
228      * Diese Methode nimmt ...
229      *
230      * @param integer $inputParam1
231      * @param string  $inputParam2
232      * @return float
233      */
234     public function method2($inputParam1, $inputParam2) {
235         ...
236     }
238     ...
241 $server = new Zend_Soap_Server(null, $options);
242 // Die Klasse an den Soap Server binden
243 $server->setClass('MyClass');
244 // Binden eines bereits initialisierten Objekts an den Soap Server
245 $server->setObject(new MyClass());
247 $server->handle();
248 ]]></programlisting>
250             <note>
251                 <title>Wichtig!</title>
253                 <para>
254                     Jede Methode sollte komplett beschrieben sein indem Docblocks für Methoden
255                     verwendet werden wenn man plant die Autodiscovery Funktionalität zu verwenden um
256                     ein entsprechendes Web Service WSDL vorzubereiten.
257                 </para>
258             </note>
259         </para>
261         <para>
262             Die zweite Methode der Definition einer Web Service <acronym>API</acronym> ist die
263             Verwendung eines Sets von Funktionen und <methodname>addFunction()</methodname> oder
264             <methodname>loadFunctions()</methodname> Methoden:
266             <programlisting language="php"><![CDATA[
269  * Diese Funktion ...
271  * @param integer $inputParam
272  * @return string
273  */
274 function function1($inputParam) {
275     ...
279  * Diese Funktion ...
281  * @param integer $inputParam1
282  * @param string  $inputParam2
283  * @return float
284  */
285 function function2($inputParam1, $inputParam2) {
286     ...
289 $server = new Zend_Soap_Server(null, $options);
290 $server->addFunction('function1');
291 $server->addFunction('function2');
293 $server->handle();
294 ]]></programlisting>
295         </para>
296     </sect2>
298     <sect2 id="zend.soap.server.request_response">
299         <title>Anfragen und Antwort Objekte behandeln</title>
301         <note>
302             <title>Fortgeschritten</title>
304             <para>
305                 Dieser Abschnitt beschreibt das fortgeschrittene bearbeiten von
306                 Anfrage-/Antwort-Optionen und kann übersprungen werden.
307             </para>
308         </note>
310         <para>
311             Die <classname>Zend_Soap_Server</classname> Komponente führt Anfrage/Antwort-Bearbeitung
312             automatisch durch. Sie erlaubt es aber diese zu fangen und Vor- und Nach-bearbeitungen
313             durchzuführen.
314         </para>
316         <sect3 id="zend.soap.server.request_response.request">
317             <title>Anfrage Bearbeitung</title>
319             <para>
320                 Die <methodname>Zend_Soap_Server::handle()</methodname> Methode nimmt Anfragen vom
321                 Standard-Eingabe Stream ('php://input') entgegen. Sie kann übergangen werden durch
322                 die Angabe von optionalen Parametern an die <methodname>handle()</methodname>
323                 Methode oder durch setzen einer Anfrage durch Verwendung der
324                 <methodname>setRequest()</methodname> Methode:
325                 <programlisting language="php"><![CDATA[
327 $server = new Zend_Soap_Server(...);
329 // Eine Anfrage setzen durch Verwendung des optionalen $request Parameters
330 $server->handle($request);
332 // Eine Anfrage setzen durch Verwendung der setRequest() Methode
333 $server->setRequest();
334 $server->handle();
335 ]]></programlisting>
336             </para>
338             <para>
339                 Anfrage Objekte können dargestellt werden durch Verwendung der folgenden Dinge:
341                 <itemizedlist>
342                     <listitem>
343                         <para>
344                             DOMDocument (gecastet zu <acronym>XML</acronym>)
345                         </para>
346                     </listitem>
348                     <listitem>
349                         <para>
350                             DOMNode (Besitzer Dokument wird genommen und zu <acronym>XML</acronym>
351                             gecastet)
352                         </para>
353                     </listitem>
355                     <listitem>
356                         <para>
357                             SimpleXMLElement (gecasted zu <acronym>XML</acronym>)
358                         </para>
359                     </listitem>
361                     <listitem>
362                         <para>
363                             stdClass (__toString() wird aufgerufen und geprüft ob es gültiges
364                             <acronym>XML</acronym> ist)
365                         </para>
366                     </listitem>
368                     <listitem>
369                         <para>
370                             string (geprüft ob es gültiges <acronym>XML</acronym> ist)
371                         </para>
372                     </listitem>
373                 </itemizedlist>
374             </para>
376             <para>
377                 Die zuletzt bearbeitete Anfrage kann durch Verwendung der
378                 <methodname>getLastRequest()</methodname> Methode als <acronym>XML</acronym> String
379                 empfangen werden:
381                 <programlisting language="php"><![CDATA[
383 $server = new Zend_Soap_Server(...);
385 $server->handle();
386 $request = $server->getLastRequest();
387 ]]></programlisting>
388             </para>
389         </sect3>
391         <sect3 id="zend.soap.server.request_response.response">
392             <title>Antworten vor-bearbeiten</title>
394             <para>
395                 Die <methodname>Zend_Soap_Server::handle()</methodname> Methode wirft die erzeugte
396                 Antwort automatisch auf den Ausgabe Stream aus. Das kann durch Verwendung von
397                 <methodname>setReturnResponse()</methodname> mit <constant>TRUE</constant> oder
398                 <constant>FALSE</constant> als Parameter blockiert werden
400                 <footnote>
401                     <para>
402                         Der aktuelle Status des Rückgabe Antwort Flags kann mit der
403                         <methodname>setReturnResponse()</methodname> Methode abgefragt werden.
404                     </para>
405                 </footnote>.
407                 Die erzeugte Antwort wird in diesem Fall durch die <methodname>handle()</methodname>
408                 Methode zurückgegeben.
410                 <programlisting language="php"><![CDATA[
412 $server = new Zend_Soap_Server(...);
414 // Eine Antwort als Rückgabewert der handle() Methode
415 // erhalten statt diese auf den Ausgabe Stream zu werfen
416 $server->setReturnResponse(true);
418 $response = $server->handle();
420 ]]></programlisting>
421             </para>
423             <para>
424                 Die letzte Antwort kann auch mit der <methodname>getLastResponse()</methodname>
425                 Methode empfangen werden um Vor-Bearbeitungen durchzuführen:
427                 <programlisting language="php"><![CDATA[
429 $server = new Zend_Soap_Server(...);
431 $server->handle();
432 $response = $server->getLastResponse();
434 ]]></programlisting>
435             </para>
436         </sect3>
437     </sect2>
438 </sect1>