|
|
@@ -6,10 +6,9 @@
|
|
|
<sect2 id="zend.rest.client.introduction">
|
|
|
<title>Einführung</title>
|
|
|
<para>
|
|
|
- Die Verwendung von <classname>Zend_Rest_Client</classname> ist sehr Ähnlich der
|
|
|
- Verwendung von <code>SoapClient</code> Objekten (
|
|
|
- <ulink url="http://www.php.net/soap">SOAP Web Service Erweiterung</ulink>). Man kann
|
|
|
- einfach die REST Service Prozeduren als <classname>Zend_Rest_Client</classname> Methoden
|
|
|
+ Die Verwendung von <classname>Zend_Rest_Client</classname> ist sehr ähnlich der
|
|
|
+ Verwendung von <code>SoapClient</code> Objekten (<ulink url="http://www.php.net/soap">SOAP Web Service Erweiterung</ulink>).
|
|
|
+ Man kann einfach die REST Service Prozeduren als <classname>Zend_Rest_Client</classname> Methoden
|
|
|
aufrufen. Spezifiziere die komplette Adresse des Services im Constructor von
|
|
|
<classname>Zend_Rest_Client</classname>.
|
|
|
</para>
|
|
|
@@ -30,9 +29,9 @@ echo $client->sayHello('Davey', 'Day')->get(); // "Servus Davey, guten Tag"
|
|
|
<note>
|
|
|
<title>Unterschiede im Aufruf</title>
|
|
|
<para>
|
|
|
- <classname>Zend_Rest_Client</classname> versucht das die entfernten Methoden, so
|
|
|
+ <classname>Zend_Rest_Client</classname> versucht, dass die entfernten Methoden, so
|
|
|
weit wie möglich, wie die nativen Methoden aussehen, wobei der einzige Unterschied
|
|
|
- darin besteht das der Methodenaufruf mit <methodname>get()</methodname>,
|
|
|
+ darin besteht, dass der Methodenaufruf mit <methodname>get()</methodname>,
|
|
|
<methodname>post()</methodname>, <methodname>put()</methodname> oder
|
|
|
<methodname>delete()</methodname> erfolgen muß. Dieser Aufruf kann entweder über
|
|
|
Methoden Verkettung oder in eigenen Methodenaufrufen erfolgen:
|
|
|
@@ -50,8 +49,8 @@ echo $client->get();
|
|
|
|
|
|
<para>
|
|
|
Alle Anfragen die über <classname>Zend_Rest_Client</classname> gemacht wurden,
|
|
|
- retournieren ein <classname>Zend_Rest_Client_Response</classname> Objekt. Dieses Objekt
|
|
|
- hat viele Eigenschaften was es einfacher macht auf die Ergebnisse zuzugreifen.
|
|
|
+ liefern ein <classname>Zend_Rest_Client_Response</classname> Objekt zurück. Dieses
|
|
|
+ Objekt hat viele Eigenschaften, was es einfacher macht, auf die Ergebnisse zuzugreifen.
|
|
|
</para>
|
|
|
|
|
|
<para>
|
|
|
@@ -72,28 +71,27 @@ if ($result->isSuccess()) {
|
|
|
</example>
|
|
|
|
|
|
<para>
|
|
|
- Im obigen Beispiel kann man sehen das das Anfrage Ergebnis als Objekt verwendet wird, um
|
|
|
- <methodname>isSuccess()</methodname> aufzurufen, und dann kann das Objekt wegen
|
|
|
- <methodname>__toString()</methodname> einfach ausgegeben (<code>echo</code>) werden um
|
|
|
- das Ergebnis zu erhalten. <classname>Zend_Rest_Client_Response</classname> erlaubt die
|
|
|
- Ausgabe jedes skalaren Wertes. Für komplexe Typen, kann entweder die Array oder die
|
|
|
- Objekt Schreibweise verwendet werden.
|
|
|
+ Im obigen Beispiel kann man sehen, dass das Ergebnis der Anfrage als Objekt verwendet wird,
|
|
|
+ um <methodname>isSuccess()</methodname> aufzurufen. Mithilfe der magischen
|
|
|
+ <methodname>__toString()</methodname>-Methode kann man das Objekt bzw. das Ergebnis ausgeben
|
|
|
+ (<code>echo</code>). <classname>Zend_Rest_Client_Response</classname> erlaubt die
|
|
|
+ Ausgabe jedes skalaren Wertes. Für komplexe Typen, kann entweder die Array- oder die
|
|
|
+ Objektschreibweise verwendet werden.
|
|
|
</para>
|
|
|
|
|
|
<para>
|
|
|
- Wenn trotzdem, ein Service abgefragt wird der nicht
|
|
|
- <classname>Zend_Rest_Server</classname> verwendet, wird sich das
|
|
|
- <classname>Zend_Rest_Client_Response</classname> Objekt mehr wie ein
|
|
|
- <code>SimpleXMLElement</code> verhalten. Um die Dinge trotzdem einfacher zu gestalten,
|
|
|
- wird das <acronym>XML</acronym> automatisch abgefragt, indem XPath verwendet wird wenn
|
|
|
- die Eigenschaft nicht von direkter Abstammung des Dokument Root Elements ist.
|
|
|
+ Wenn trotzdem ein Service abgefragt wird, der nicht <classname>Zend_Rest_Server</classname>
|
|
|
+ verwendet, wird sich das <classname>Zend_Rest_Client_Response</classname> Objekt mehr wie
|
|
|
+ ein <code>SimpleXMLElement</code> verhalten. Um die Dinge trotzdem einfacher zu gestalten,
|
|
|
+ wird das <acronym>XML</acronym> automatisch abgefragt, indem XPath verwendet wird, wenn
|
|
|
+ die Eigenschaft nicht von direkter Abstammung des Dokument Root-Elements ist.
|
|
|
Zusätzlich, wenn auf eine Eigenschaft als Methode zugegriffen wird, empfängt man den
|
|
|
<acronym>PHP</acronym> Wert für das Objekt, oder ein Array mit den
|
|
|
<acronym>PHP</acronym> Wert Ergebnissen.
|
|
|
</para>
|
|
|
|
|
|
<example id="zend.rest.client.return.example-2">
|
|
|
- <title>Technorati's Rest Service verwenden</title>
|
|
|
+ <title>Technorati's REST Service verwenden</title>
|
|
|
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
$technorati = new Zend_Rest_Client('http://api.technorati.com/bloginfo');
|
|
|
@@ -145,15 +143,15 @@ echo $result->firstname() .' '. $result->lastname();
|
|
|
<para>
|
|
|
Hier greifen wir auf die <code>firstname</code> und <code>lastname</code> Eigenschaften
|
|
|
zu. Selbst wenn diese keine Top-Level Elemente sind, werden Sie automatisch
|
|
|
- zurückgegeben wenn auf Sie durch Ihren Namen zugegriffen wird.
|
|
|
+ zurückgegeben, wenn auf sie durch ihren Namen zugegriffen wird.
|
|
|
</para>
|
|
|
|
|
|
<note>
|
|
|
- <title>Mehrfache Teile</title>
|
|
|
+ <title>Mehrere Elemente</title>
|
|
|
|
|
|
<para>
|
|
|
- Wenn mehrfache Teile gefunden werden wenn auf man einen Wert durch seinen Namen
|
|
|
- zugreift, wird ein Array von SimpleXMLElementen zurückgegeben; beim Zugriff über die
|
|
|
+ Wenn beim Zugriff, über einen Namen, mehrere Elemente mit demselben Namen gefunden werden,
|
|
|
+ wird ein Array von SimpleXML-Elementen zurückgegeben. Beim Zugriff über die
|
|
|
Methodenschreibweise wird ein Array von <acronym>PHP</acronym> Werten zurückgegeben.
|
|
|
</para>
|
|
|
</note>
|
|
|
@@ -163,14 +161,13 @@ echo $result->firstname() .' '. $result->lastname();
|
|
|
<title>Anfrage Argumente</title>
|
|
|
|
|
|
<para>
|
|
|
- Wenn man keine Anfrage an einen <classname>Zend_Rest_Server</classname> basierenden
|
|
|
- Server durchführt, sind die Chancen groß das man mehrere Argumente mit der Anfrage
|
|
|
- senden muß. Das wird durchgeführt indem man eine Methode mit dem Namen des Arguments
|
|
|
- aufruft, und den Wert als das erste (und einzige) Argument übergibt. Jeder dieser
|
|
|
- Methodenaufrufe gibt das Objekt selbst zurück, was Verkettung oder "flüssige" Verwendung
|
|
|
- erlaubt. Der erste Aufruf, oder das erste Argument das übergeben wird, wenn man mehr als
|
|
|
- ein Argument übergeben will, wird immer als die Methode angenommen wenn ein
|
|
|
- <classname>Zend_Rest_Server</classname> Service aufgerufen wird.
|
|
|
+ Wenn man eine Anfrage an einen Server sendet, welcher nicht auf <classname>Zend_Rest_Server</classname>
|
|
|
+ basiert, sind die Chancen groß, dass man mehrere Argumente mit der Anfrage senden muß. Das
|
|
|
+ wird durchgeführt, indem man eine Methode mit dem Namen des Arguments aufruft und den Wert, als das
|
|
|
+ erste (und einzige) Argument übergibt. Jeder dieser Methodenaufrufe, gibt das Objekt selbst zurück,
|
|
|
+ was Verkettung oder "flüssige" Verwendung erlaubt. Der erste Aufruf, oder das erste Argument, das
|
|
|
+ übergeben wird, wenn man mehr als ein Argument übergeben will, wird immer als die Methode angenommen
|
|
|
+ wenn ein <classname>Zend_Rest_Server</classname> Service aufgerufen wird.
|
|
|
</para>
|
|
|
|
|
|
<example id="zend.rest.client.args.example-1">
|
|
|
@@ -190,22 +187,22 @@ $client->arg('value1')->arg2('value2')->get();
|
|
|
</example>
|
|
|
|
|
|
<para>
|
|
|
- Beide der Methoden im obigen Beispiel, ergeben die folgenden get Argumente:
|
|
|
+ Beide Varianten im obigen Beispiel, ergeben die folgenden get-Argumente:
|
|
|
<code>?method=arg&arg1=value1&arg=value1&arg2=value2</code>
|
|
|
</para>
|
|
|
|
|
|
<para>
|
|
|
- Es gilt zu bemerken das der erste Aufruf von <code>$client->arg('value1');</code> in
|
|
|
- beidem resultiert <code>method=arg&arg1=value1</code> und <code>arg=value1</code>;
|
|
|
- Es ist so das <classname>Zend_Rest_Server</classname> die Anfrage korrekt versteht,
|
|
|
- anstatt das vor-definiertes Wissen über das Service benötigt wird.
|
|
|
+ Es gilt zu bemerken, dass der erste Aufruf von <code>$client->arg('value1');</code> in
|
|
|
+ beidem resultiert: <code>method=arg&arg1=value1</code> und <code>arg=value1</code>.
|
|
|
+ Es ist so, dass <classname>Zend_Rest_Server</classname> die Anfrage korrekt versteht,
|
|
|
+ ohne dass vordefiniertes Wissen über das Service benötigt wird.
|
|
|
</para>
|
|
|
|
|
|
<warning>
|
|
|
<title>Striktheit von Zend_Rest_Client</title>
|
|
|
|
|
|
<para>
|
|
|
- Jeder REST Service der strikt in seinen Argumenten ist die er empfängt wird wegen
|
|
|
+ Jeder REST Service der strikt in seinen Argumenten ist, die er empfängt, wird wegen
|
|
|
dem oben beschriebenen Verhalten bei der Verwendung von
|
|
|
<classname>Zend_Rest_Client</classname> fehlschlagen. Das ist keine gewöhnliche
|
|
|
Praxis und sollte keine Probleme verursachen.
|