| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 17166 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.gdata.introduction">
- <title>Einführung</title>
- <para>
- Die APIs von Google Data bieten ein programmtechnisches Interface zu einigen von Google's
- Online Services. Das Google Data Protokoll basiert auf dem
- <ulink url="http://ietfreport.isoc.org/idref/draft-ietf-atompub-protocol/">Atom Publishing
- Protokoll</ulink> und erlaubt Client Anwendungen das Empfangen von passenden Anfragen zu
- Daten, senden von Daten, modifizieren von Daten und löschen von Daten wobei Standard HTTP
- und das Atom Syndication Format verwendet wird. Die <classname>Zend_Gdata</classname>
- Komponente ist ein PHP 5 Interface für den Zugriff auf Daten von Google von PHP aus. Die
- <classname>Zend_Gdata</classname> Komponente unterstützt auch den Zugriff auf andere
- Services die das Atom Publishing Protokoll implementieren.
- </para>
- <para>
- Siehe <ulink
- url="http://code.google.com/apis/gdata/">http://code.google.com/apis/gdata/</ulink> für
- mehr Informationen über die Google Data API.
- </para>
- <para>
- Die Services auf die durch <classname>Zend_Gdata</classname> zugegriffen werden kann
- beinhalten unter anderem:
- <itemizedlist>
- <listitem>
- <para>
- <link linkend="zend.gdata.calendar">Google Kalender</link> ist eine populäre
- online Kalender Anwendung.
- </para>
- </listitem>
- <listitem>
- <para>
- <link linkend="zend.gdata.spreadsheets">Google Tabellenkalkulation</link> bietet
- ein gemeinschaftliches online Tabellenkalkulations Tool welches als einfacher
- Datenspeicher für eigene Anwendungen verwendet werden kann.
- </para>
- </listitem>
- <listitem>
- <para>
- <link linkend="zend.gdata.docs">Google Dokumenten Liste</link> bietet eine
- online Liste von allen Tabellenkalkulationen, Wortbearbeitungs Dokumenten, und
- Präsentationen die in einem Google Account gespeichert sind.
- </para>
- </listitem>
- <listitem>
- <para>
- <link linkend="zend.gdata.gapps">Google Versorgung</link> bietet die Möglichkeit
- Benutzerdaten, Spitznamen und Emaillisten auf einer Google Apps gehosten Domain
- zu erstellen, erhalten, aktualisieren und zu löschen.
- </para>
- </listitem>
- <listitem>
- <para>
- <link linkend="zend.gdata.gbase">Google Base</link> bietet die Möglichkeit
- Elemente in Google Base zu empfangen, senden, aktualisieren und zu löschen.
- </para>
- </listitem>
- <listitem>
- <para>
- <link linkend="zend.gdata.youtube">YouTube</link> bietet die Möglichkeit Videos,
- Kommentare, Favoriten, Einschreibungen, Benutzerprofile und vieles mehr zu
- Suchen und zu Empfangen.
- </para>
- </listitem>
- <listitem>
- <para>
- <link linkend="zend.gdata.photos">Picasa Web Album</link> bietet eine online
- Photo Sharing Anwendung.
- </para>
- </listitem>
- <listitem>
- <para>
- <ulink
- url="http://code.google.com/apis/blogger/developers_guide_php.html">Google
- Blogger</ulink> ist ein populärer Internet Provider von "push-button
- Veröffentlichung" und Verbreitung.
- </para>
- </listitem>
- <listitem>
- <para>
- Google CodeSearch erlaubt das Suchen von öffentlichem Source Code für viele
- Projekte.
- </para>
- </listitem>
- <listitem>
- <para>
- Google Notebook erlaubt das sehen von veröffentlichten Notebook Inhalten.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- <note>
- <title>Nicht unterstützte Services</title>
- <para>
- <classname>Zend_Gdata</classname> bietet kein Interface zu irgendwelchen anderen Google
- Services wie Search, Gmail, Translation oder Maps. Nur Services die das Google Data API
- unterstützen werden unterstützt.
- </para>
- </note>
- <sect2 id="zend.gdata.introduction.structure">
- <title>Struktur von Zend_Gdata</title>
- <para>
- <classname>Zend_Gata</classname> besteht aus verschiedenen Typen von Klassen:
- <itemizedlist>
- <listitem>
- <para>
- Service Klassen - abgeleitet von <classname>Zend_Gdata_App</classname>.
- Diese beinhalten auch andere Klassen wie <classname>Zend_Gdata</classname>,
- <classname>Zend_Gdata_Spreadsheeps</classname>, usw. Diese Klassen erlauben
- die Interaktion mit APP oder GData Services und bieten die Möglichkeit Feeds
- und Einträge zu empfangen, Einträge zu senden, zu aktualisieren und zu
- löschen.
- </para>
- </listitem>
- <listitem>
- <para>
- Abfrage Klassen - abgeleitet von <classname>Zend_Gdata_Query</classname>.
- Diese beinhalten auch andere Klassen für spezielle Services, wie
- <classname>Zend_Gdata_Spreadsheet_ListQuery</classname> und
- <classname>Zend_Gdata_Spreadsheets_CellQuery</classname>. Abfrage Klassen
- bieten Methoden die verwendet werden können um Abfragen für Daten zu
- erstellen die von GData Services empfangen werden. Die Methoden inkludieren
- Getter und Setter wie <methodname>setUpdatedMin()</methodname>,
- <methodname>setStartIndex()</methodname>, und
- <methodname>getPublishedMin()</methodname>. Die Abfrage Klassen haben auch
- eine Methode um eine URL zu erhalten die die erstellte Abfrage
- repräsentieren. -- <code>getQueryUrl</code>. Alternativ kann man die Abfrage
- String Komponente der URL erhalten indem die
- <methodname>getQueryString()</methodname> Methode verwendet wird.
- </para>
- </listitem>
- <listitem>
- <para>
- Feed Klassen - abgeleitet von <classname>Zend_Gdata_App_Feed</classname>.
- Diese beinhalten auch andere Klassen wie
- <classname>Zend_Gdata_Feed</classname>,
- <classname>Zend_Gdata_Spreadsheets_SpreadsheetFeed</classname>, und
- <classname>Zend_Gdata_Spreadsheets_ListFeed</classname>. Diese Klassen
- repräsentieren Feeds von Einträgen die von Services empfangen wurden. Sie
- werden primär verwendet um Daten die von Services zurückgegeben werden zu
- erhalten.
- </para>
- </listitem>
- <listitem>
- <para>
- Eingabe Klassen - abgeleitet von
- <classname>Zend_Gdata_App_Entry</classname>. Diese beinhalten auch andere
- Klassen wie <classname>Zend_Gdata_Entry</classname>, und
- <classname>Zend_Gdata_Spreadsheets_ListEntry</classname>. Diese Klassen
- repräsentieren Einträge die von Services empfangen oder für die Erstellung
- von Daten, die an Services geschickt werden, verwendet werden. Zusätzlich
- zur Möglichkeit die Eigenschaften eines Eintrages (wie den Zellen Wert der
- Tabellenkalkulation) zu setzen, kann das Objekt des Eintrages verwendet
- werden um Aktualisierungs- oder Löschanfragen an ein Service zu senden. Zum
- Beispiel kann <code>$entry->save()</code> aufgerufen werden um Änderungen
- die an einem Eintrage durchgeführt wurden zu einem Service zurück zu
- speichern von welche der Eintrag initiiert wurde, oder
- <code>$entry->delete()</code> um einen Eintrag von einem Server zu löschen.
- </para>
- </listitem>
- <listitem>
- <para>
- Andere Daten Modell Klassen - abgeleitet von
- <classname>Zend_Gdata_App_Extension</classname>. Diese beinhalten Klassen
- wie <classname>Zend_Gdata_App_Extension_Title</classname> (repräsentiert das
- atom:title XML Element), <classname>Zend_Gdata_Extension_When</classname>
- (repräsentiert das gd:when XML Element das von dem GData Event "Kind"
- verwendet wird), und <classname>Zend_Gdata_Extension_Cell</classname>
- (repräsentiert das gs:cell XML Element das von Google Tabellenkalkulation
- verwendet wird). Diese Klassen werden pur verwendet um von den Server
- zurückgegebene Daten zu speichern und für die Erstellung von Daten die an
- Services gesendet werden. Diese beinhalten Getter und Setter wie
- <methodname>setText()</methodname> um den Kindtext Node eines Elements zu
- setzen, <methodname>getText()</methodname> um den Text Node eines Elements
- zu erhalten, <methodname>getStartTime()</methodname> um das Startzeit
- Attribut eines When Elements oder anderen ähnlichen Methoden zu empfangen.
- Die Daten Modell Klassen beinhalten auch Methoden wie
- <methodname>getDOM()</methodname> um eine DOM Repräsentation des Elements
- und aller Kinder zu erhalten, und <methodname>transferFromDOM()</methodname>
- um eine Daten Modell Repräsentation des DOM Baumes zu erstellen.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </sect2>
- <sect2 id="zend.gdata.introduction.services">
- <title>Mit Google Services interagieren</title>
- <para>
- Google Daten Services basieren auf dem Atom Publishing Protokoll (APP) und dem Atom
- Syndication Format. Um mit APP oder den Google Services zu interagieren indem
- <classname>Zend_Gdata</classname> verwendet wird, müssen Service Klassen wie
- <classname>Zend_Gdata_App</classname>, <classname>Zend_Gdata</classname>,
- <classname>Zend_Gdata_Spreadsheets</classname>, usw. verwendet werden. Diese Service
- Klassen bieten Methoden um Daten von Services als Feeds zu empfangen, neue Einträge in
- Feeds einzufügen, Einträge zu aktuslieieren und Einträge zu löschen.
- </para>
- <para>
- Achtung: Ein komplettes Beispiel davon wie mit <classname>Zend_Gdata</classname>
- gearbeitet werden kann ist im <code>demos/Zend/Gdata</code> Verzeichnis vorhanden.
- Dieses Beispiel läuft von der Kommandozeile aus, aber die enthaltenen Methoden sind
- einfach in einem Web Anwendung zu portieren.
- </para>
- </sect2>
- <sect2 id="zend.gdata.introduction.magicfactory">
- <title>Instanzen von Zend_Gdata Klassen erhalten</title>
- <para>
- Der Zend Framework Namensstandard erzwingt das alle Klassen nach der Verzeichnis
- Struktur benannt werden in welcher sie vorhanden sind. Zum Beispiel eine Erweiterung die
- zu Tabellenkalkulation gehört und in <code>Zend/Gdata/Spreadsheets/Extension/...</code>
- gespeichert ist, muß als Ergebnis
- <classname>Zend_Gdata_Spreadsheets_Extension_...</classname> benannt werden. Das
- verursacht eine Menge an Tipparbeit wenn versucht wird eine neue Instanz eines Zellen
- Elements zu erstellen!
- </para>
- <para>
- Wir haben eine magische Fabriksmethode in alle Service Klassen (wie
- <classname>Zend_Gdata_App</classname>, <classname>Zend_Gdata</classname>,
- <classname>Zend_Gdata_Spreadsheets</classname>) implementiert welche die Erstellung
- neuer Instanzen von Daten Modellen, Abfragen und anderen Klassen viel einfacher macht.
- Diese magische Fabriksmethode ist durch die Verwendung der magischen <code>__call</code>
- Methode implementiert um auf alle Versuche
- <code>$service->newXXX(arg1, arg2, ...)</code> aufzurufen, angewendet zu werden.
- Basieren auf dem Wert von XXX, wird eine Suche in allen registrierten 'Paketen', für die
- gewünschte Klasse, durchgeführt. Hier sind einige Beispiele:
- </para>
- <programlisting language="php"><![CDATA[
- $ss = new Zend_Gdata_Spreadsheets();
- // Erstellt ein Zend_Gdata_App_Spreadsheets_CellEntry
- $entry = $ss->newCellEntry();
- // Erstellt ein Zend_Gdata_App_Spreadsheets_Extension_Cell
- $cell = $ss->newCell();
- $cell->setText('Mein Zellenwert');
- $cell->setRow('1');
- $cell->setColumn('3');
- $entry->cell = $cell;
- // ... $entry kann dann verwendet werden um eine Aktualisierung
- // an eine Google Tabellenkalkulation zu senden
- ]]></programlisting>
- <para>
- Jede Service Klasse im abgeleiteten Baum ist dafür verantwortlich das die richtigen
- 'Pakete' (Verzeichnisse) registriert werden, in welchen dann durch den Aufruf der
- matischen Fabriksmethode, gesucht wird.
- </para>
- </sect2>
- <sect2 id="zend.gdata.introduction.authentication">
- <title>Google Data Client Authentifizierung</title>
- <para>
- Die meisten Google Daten Services erfordern das sich die Client Anwendung auf dem Google
- Server authentifiziert bevor auf private Daten zugegriffen, oder Daten gespeichert oder
- gelöscht werden können. Es gibt zwei Implementationen der Authentifizierung für Google
- Daten: <link linkend="zend.gdata.authsub">AuthSub</link> und <link
- linkend="zend.gdata.clientlogin">ClientLogin</link>.
- <classname>Zend_Gdata</classname> bietet Klassen Interfaces für beide dieser Methoden.
- </para>
- <para>
- Die meisten anderen Typen von Abfragen auf Google Daten Servicen benötigen keine
- Authentifizierung.
- </para>
- </sect2>
- <sect2 id="zend.gdata.introduction.dependencies">
- <title>Abhängigkeiten</title>
- <para>
- <classname>Zend_Gdata</classname> verwendet <link
- linkend="zend.http.client">Zend_Http_Client</link> um Anfragen an
- google.com zu senden und Ergebnisse zu erhalten. Die Antworter der meisten Google Data
- Anfragen werden als Subklasse von <classname>Zend_Gdata_App_Feed</classname> oder
- <classname>Zend_Gdata_App_Entry</classname> Klassen zurückgegeben.
- </para>
- <para>
- <classname>Zend_Gdata</classname> nimmt an das die PHP Anwendung auf einem Host läuft
- der eine direkte Verbindung zum Internet hat. Der <classname>Zend_Gdata</classname>
- Client arbeitet indem er zu Google Daten Servern Kontakt aufnimmt.
- </para>
- </sect2>
- <sect2 id="zend.gdata.introduction.creation">
- <title>Erstellen eines neuen Gdata Klienten</title>
- <para>
- Man muß ein neues Objekt der Klasse <classname>Zend_Gdata_App</classname>,
- <classname>Zend_Gdata</classname>, oder einer dessen Subklassen erstellen die Helfer
- Methoden für servicespezifische Verhaltensweisen anbieten.
- </para>
- <para>
- Der einzige optionale Parameter für den Konstruktor von
- <classname>Zend_Gdata_App</classname> ist eine Instanz von
- <link linkend="zend.http.client">Zend_Http_Client</link>. Wenn dieser Parameter nicht
- übergeben wird, erstellt <classname>Zend_Gdata</classname> ein standardmäßiges
- <classname>Zend_Http_Client</classname> Objekt, welches keine Zugangsdaten zugeordnet
- hat um auf private Feeds zugreifen zu können. Die Spezifizierung des
- <classname>Zend_Http_Client</classname> Objektes erlaubt es auch Konfigurationsoptionen
- an das Client Objekt zu übergeben.
- </para>
- <programlisting language="php"><![CDATA[
- $client = new Zend_Http_Client();
- $client->setConfig( ...options... );
- $gdata = new Zend_Gdata($client);
- ]]></programlisting>
- <para>
- Beginnend mit Zend Framework 1.7, wurde die Unterstützung für die Versionierung des
- Protkolls hinzugefügt. Das erlaut dem Client und Server neue Fesatures zu unterstützen,
- wärend die Rückwärts Kompatibilität gewahrt bleibt. Wärend die meisten Services das für
- dich selbst durchführen, wenn man eine <classname>Zend_Gdata</classname> Instanz direkt
- erstellt (als Gegensatz zu einer Ihrer Unterklassen), kann es sein das man die
- gewünschte Version des Protokolls spezifizieren will um auf spezielle
- Serverfunktionalitäten zugreifen zu können.
- </para>
- <programlisting language="php"><![CDATA[
- $client = new Zend_Http_Client();
- $client->setConfig( ...options... );
- $gdata = new Zend_Gdata($client);
- $gdata->setMajorProtocolVersion(2);
- $gdata->setMinorProtocolVersion(null);
- ]]></programlisting>
- <para>
- Siehe auch die Sektion über Authentifizierung für Methoden, um ein authentifiziertes
- <classname>Zend_Http_Client</classname> Objekt zu erstellen.
- </para>
- </sect2>
- <sect2 id="zend.gdata.introduction.parameters">
- <title>Übliche Abfrage Parameter</title>
- <para>
- Es können Parameter spezifiziert werden um Abfragen mit
- <classname>Zend_Gdata</classname> anzupassen. Abfrageparameter werden spezifiziert indem
- Subklassen von <classname>Zend_Gdata_Query</classname> verwendet werden. Die
- <classname>Zend_Gdata_Query</classname> Klasse beinhaltet Methoden um alle
- Abfrageparameter zu setzen die von Gdata Services verwendet werden. Individuelle
- Services, wie Tabellenkalkulationen, bieten auch Abfrageklassen zu definierten
- Parametern welche an das spezielle Service und die Feeds angepasst sind.
- Tabellenkalkulationen beinhalten eine CellQuery Klasse um den Zellen Feed abzufragen und
- eine ListQuery Klasse um den Listen Feed abzufragen, da verschiedene Abfrageparameter
- für jeder dieser Feedtypen möglich sind. Die GData-weiten Parameter werden anbei
- beschrieben.
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Der <code>q</code> Parameter spezifiziert eine komplette Textabfrage. Der Wert
- dieses Parameters ist ein String.
- </para>
- <para>
- Dieser Parameter kann mit der <methodname>setQuery()</methodname> Methode
- gesetzt werden.
- </para>
- </listitem>
- <listitem>
- <para>
- Der <code>alt</code> Parameter spezifiziert den Feed Typ. Der Wert dieses
- Parameters kann <code>atom</code>, <code>rss</code>, <code>json</code>, oder
- <code>json-in-script</code> sein. Wenn dieser Parameter nicht spezifiziert wird,
- ist der Standard Feedtyp <code>atom</code>.
- <classname>Zend_Http_Client</classname> könnte verwendet werden um Feeds in
- anderen Formaten zu empfangen, indem die von der
- <classname>Zend_Gdata_Query</classname> Klasse oder deren Subklassen erzeugten
- Abfrage URLs verwendet werden.
- </para>
- <para>
- Dieser Parameter kann mit der <methodname>setAlt()</methodname> Methode gesetzt
- werden.
- </para>
- </listitem>
- <listitem>
- <para>
- Der <code>maxResults</code> Parameter begrenzt die Anzahl an Einträgen im Feed.
- Der Wert dieses Parameters ist ein Integer. Die zurückgegebene Anzahl an
- Einträgen im Feed wird diesen Wert nicht überschreiten.
- </para>
- <para>
- Dieser Parameter kann mit der <methodname>setMaxResults()</methodname> Methode
- gesetzt werden.
- </para>
- </listitem>
- <listitem>
- <para>
- Der <code>startIndex</code> Parameter spezifiziert die ordinale Nummer des
- ersten Eintrags der im Feed zurückgegeben wird. Einträge vor dieser Nummer
- werden übergangen.
- </para>
- <para>
- Dieser Parameter kann mit der <methodname>setStartIndex()</methodname> Methode
- gesetzt werden.
- </para>
- </listitem>
- <listitem>
- <para>
- Die Parameter <code>updatedMin</code> und <code>updatedMax</code> spezifizieren
- Grenzen für das Datum der Einträge. Wenn ein Wert für <code>updatedMin</code>
- spezifiziert wird, werden keine Einträge die vor dem spezifizierten Datum
- aktualisiert wurden, im Feed inkludiert. Genauso werden keine Einträge
- inkludiert die nach einem Datum aktualisiert wurden wenn <code>updatedMax</code>
- spezifiziert wird.
- </para>
- <para>
- Es können nummerische Zeitstempel, oder eine Variation von Datum/Zeit String
- Repräsentationen als Wert für diese Parameter verwendet werden.
- </para>
- <para>
- Diese Parameter kkönnen mit den <methodname>setUpdatedMin()</methodname> und
- <methodname>setUpdatedMax()</methodname> Methoden gesetzt werden.
- </para>
- </listitem>
- </itemizedlist>
- <para>
- Es gibt eine <code>get</code> Funktion für jede <code>set</code> Funktion.
- </para>
- <programlisting language="php"><![CDATA[
- $query = new Zend_Gdata_Query();
- $query->setMaxResults(10);
- echo $query->getMaxResults(); // gibt 10 zurück
- ]]></programlisting>
- <para>
- Die <classname>Zend_Gdata</classname> Klasse implementiert auch "magische" Getter und
- Setter Methoden, es kann also der Name des Parameters als virtuelles Mitglied der Klasse
- verwendet werden.
- </para>
- <programlisting language="php"><![CDATA[
- $query = new Zend_Gdata_Query();
- $query->maxResults = 10;
- echo $query->maxResults; // gibt 10 zurück
- ]]></programlisting>
- <para>
- Es können alle Parameter mit der <methodname>resetParameters()</methodname> Funktion
- gelöscht werden. Das ist nützlich wenn ein <classname>Zend_Gdata</classname> Objekt für
- mehrfache Abfragen wiederverwendet werden soll.
- </para>
- <programlisting language="php"><![CDATA[
- $query = new Zend_Gdata_Query();
- $query->maxResults = 10;
- // ...den Feed empfangen...
- $query->resetParameters(); // löscht alle Parameter
- // ...einen anderen Feed empfangen...
- ]]></programlisting>
- </sect2>
- <sect2 id="zend.gdata.introduction.getfeed">
- <title>Einen Feed empfangen</title>
- <para>
- Die <methodname>getFeed()</methodname> Funktion kann verwendet werden um einen Feed von
- einer spezifizierten URI zu empfangen. Diese Funktion gibt eine Instanz der Klasse, die
- als zweites Argument an getFeed übergeben wurde, zurück, welche standardmäßig
- Zend_Gdata_Feed ist.
- </para>
- <programlisting language="php"><![CDATA[
- $gdata = new Zend_Gdata();
- $query = new Zend_Gdata_Query(
- 'http://www.blogger.com/feeds/blogID/posts/default');
- $query->setMaxResults(10);
- $feed = $gdata->getFeed($query);
- ]]></programlisting>
- <para>
- Siehe spätere Sektionen für spezielle Funktionen in jeder Helfer Klasse für Google Daten
- Services. Diese Funktionen helfen Feeds von einer URI zu empfangen die für das
- angeforderte Service zuständig ist.
- </para>
- </sect2>
- <sect2 id="zend.gdata.introduction.paging">
- <title>Mit Mehrfach-Seiten Feeds arbeiten</title>
- <para>
- Wenn man einen Feed empfängt der eine große Anzahl an Einträgen enthält, kann dieser
- Feed in viele kleinere "Seiten" von Feeds gebrochen werden. Wenn das passiert, enthält
- jede Seite einen Link zur nächsten Seite der Serie. Auf diesen Link kann mit Hilfe von
- <methodname>getLink('next')</methodname> zugegriffen werden. Das folgende Beispiel zeigt
- wie auf die nächste Seite eines Feeds empfangen werden kann:
- </para>
- <programlisting language="php"><![CDATA[
- function getNextPage($feed) {
- $nextURL = $feed->getLink('next');
- if ($nextURL !== null) {
- return $gdata->getFeed($nextURL);
- } else {
- return null;
- }
- }
- ]]></programlisting>
- <para>
- Wenn man es vorzieht nicht mit Seiten in der eigenen Anwendung zu arbeiten, kann die
- erste Seite des Feeds an
- <methodname>Zend_Gdata_App::retrieveAllEntriesForFeed()</methodname> übergeben werden,
- welche alle Einträge von jeder Seite in einen einzelnen Feed zusammenfasst. Dieses
- Beispiel zeigt wie diese Funktion verwendet werden kann:
- </para>
- <programlisting language="php"><![CDATA[
- $gdata = new Zend_Gdata();
- $query = new Zend_Gdata_Query(
- 'http://www.blogger.com/feeds/blogID/posts/default');
- $feed = $gdata->retrieveAllEntriesForFeed($gdata->getFeed($query));
- ]]></programlisting>
- <para>
- Es gilt zu beachten das wenn diese Funktion aufgerufen wird, dies eine sehr lange Zeit
- benötigen kann im große Feeds zu komplettieren. Es kann notwendig sein PHP's Limit der
- Ausführungszeit zu vergrößern mithilfe von <methodname>set_time_limit()</methodname> zu
- vergrößern.
- </para>
- </sect2>
- <sect2 id="zend.gdata.introduction.usefeedentry">
- <title>Arbeiten mit Daten in Feeds und Einträgen</title>
- <para>
- Nachdem ein Feed empfangen wurde, können die Daten von dem Feed oder den Einträgen die
- in dem Feed enthalten sind, gelesen werden, indem entweder die in jeder Daten Modell
- Klasse definierten Zugriffsmethoden oder die magischen Zugriffsmethoden verwendet
- werden. Hier ist ein Beispiel:
- </para>
- <programlisting language="php"><![CDATA[
- $client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service);
- $gdata = new Zend_Gdata($client);
- $query = new Zend_Gdata_Query(
- 'http://www.blogger.com/feeds/blogID/posts/default');
- $query->setMaxResults(10);
- $feed = $gdata->getFeed($query);
- foreach ($feed as $entry) {
- // Die magischen Zugriffsmethoden verwenden
- echo 'Titel: ' . $entry->title->text;
- // Die definierten Zugriffsmethoden verwenden
- echo 'Inhalt: ' . $entry->getContent()->getText();
- }
- ]]></programlisting>
- </sect2>
- <sect2 id="zend.gdata.introduction.updateentry">
- <title>Einträge aktualisieren</title>
- <para>
- Nachdem ein Eintrag empfangen wurde, kann dieser Eintrag aktualisiert und die Änderungen
- an den Server zurück gespeichert werden. Hier ist ein Beispiel:
- </para>
- <programlisting language="php"><![CDATA[
- $client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service);
- $gdata = new Zend_Gdata($client);
- $query = new Zend_Gdata_Query(
- 'http://www.blogger.com/feeds/blogID/posts/default');
- $query->setMaxResults(10);
- $feed = $gdata->getFeed($query);
- foreach ($feed as $entry) {
- // Dem Titel 'NEU' hinzufügen
- echo 'Alter Titel: ' . $entry->title->text;
- $entry->title->text = $entry->title->text . ' NEU';
- // Den Eintrag auf dem Server aktualisieren
- $newEntry = $entry->save();
- echo 'New Title: ' . $newEntry->title->text;
- }
- ]]></programlisting>
- </sect2>
- <sect2 id="zend.gdata.introduction.post">
- <title>Einträge an Google Server schicken</title>
- <para>
- Das <classname>Zend_Gdata</classname> Objekt hat eine
- <methodname>insertEntry()</methodname> Funktion mit der man Daten hochladen kann um
- neue Einträge in Google Data Services zu speichern.
- </para>
- <para>
- Die Daten Modell Klassen jedes Services kann verwendet werden um einen entsprechenden
- Eintrag zu erstellen und an Google's Services zu schicken. Die
- <methodname>insertEntry()</methodname> Funktion akzeptiert ein Kind von
- <classname>Zend_Gdata_App_Entry</classname> als Daten die an den Service geschickt
- werden. Die Methode gibt ein Kind von <classname>Zend_Gdata_App_Entry</classname> zurück
- welches den Status des Eintrages repräsentiert der vom Server zurückgegeben wurde.
- </para>
- <para>
- Alternativ, kann die XML Struktur eines Eintrages als String konstruiert und dieser
- String an die <methodname>insertEntry()</methodname> Funktion übergeben werden.
- </para>
- <programlisting language="php"><![CDATA[
- $gdata = new Zend_Gdata($authenticatedHttpClient);
- $entry = $gdata->newEntry();
- $entry->title = $gdata->newTitle('Füßball im Park spielen');
- $content =
- $gdata->newContent('Wir besuchen den Part und spielen Fußball');
- $content->setType('text');
- $entry->content = $content;
- $entryResult = $gdata->insertEntry($entry,
- 'http://www.blogger.com/feeds/blogID/posts/default');
- echo 'Die <id> des resultierenden Eintrages ist: ' . $entryResult->id->text;
- ]]></programlisting>
- <para>
- Um Einträge zu senden, muß ein authentifizierter <classname>Zend_Http_Client</classname>
- verwendet werden der mit Hilfe der <classname>Zend_Gdata_AuthSub</classname> oder
- <classname>Zend_Gdata_ClientLogin</classname> Klassen erstellt wurde.
- </para>
- </sect2>
- <sect2 id="zend.gdata.introduction.delete">
- <title>Einträge auf einem Google Server löschen</title>
- <para>
- Option 1: Das <classname>Zend_Gdata</classname> Objekt hat eine
- <methodname>delete()</methodname> Funktion mit der Einträge von Google Daten Services
- gelöscht werden können. Der bearbeitete URL Wert eines Feed Eintrages kann der
- <methodname>delete()</methodname> Methode übergeben werden.
- </para>
- <para>
- Option 2: Alternativ kann <code>$entry->delete()</code> an einem Eintrag der von einem
- Google Service empfangen wurde, aufgerufen werden.
- </para>
- <programlisting language="php"><![CDATA[
- $gdata = new Zend_Gdata($authenticatedHttpClient);
- // ein Google Daten Feed
- $feedUri = ...;
- $feed = $gdata->getFeed($feedUri);
- foreach ($feed as $feedEntry) {
- // Option 1 - den Eintrag direkt löschen
- $feedEntry->delete();
- // Option 2 - den eintrag durch Übergabe der bearbeiteten URL an
- // $gdata->delete() löschen
- // $gdata->delete($feedEntry->getEditLink()->href);
- }
- ]]></programlisting>
- <para>
- Um Einträge zu löschen, muß ein authentifizierter
- <classname>Zend_Http_Client</classname> verwendet werden der mit Hilfe der
- <classname>Zend_Gdata_AuthSub</classname> oder
- <classname>Zend_Gdata_ClientLogin</classname> Klassen erstellt wurde.
- </para>
- </sect2>
- </sect1>
|