| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 21256 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.feed.writer">
- <title>Zend_Feed_Writer</title>
- <sect2 id="zend.feed.writer.introduction">
- <title>Einführung</title>
- <para>
- <classname>Zend_Feed_Writer</classname> ist die Bruderkomponente zu
- <classname>Zend_Feed_Reader</classname> und verantwortlich für die Erzeugung von
- Feeds für die Ausgabe. Sie unterstützt die Atom 1.0 Spezifikation (RFC 4287) und
- <acronym>RSS</acronym> 2.0 wie vom <acronym>RSS</acronym> Advisory Board
- (<acronym>RSS</acronym> 2.0.11) spezifiziert. Es ist kein Nachkomme dieses
- Standards. Trotzdem bietet es ein einfaches System der Erweiterung welches es erlaubt
- jede Erweiterung und jedes Modul für jede der zwei Spezifikationen zu implementieren
- wenn diese nicht von Haus aus angeboten werden.
- </para>
- <para>
- Auf vielen Wegen ist <classname>Zend_Feed_Writer</classname> das Gegenteil von
- <classname>Zend_Feed_Reader</classname>. Wobei <classname>Zend_Feed_Reader</classname>
- darauf fokusiert ist ein einfach zu verwendendes Architektur Frontend durch Getter
- Methoden anzubieten, und <classname>Zend_Feed_Writer</classname> durch ähnlich
- benannte Setter oder Mutatoren. Das stellt sicher das die <acronym>API</acronym> keine
- weitere Lernkurve erfordert wenn jemand bereits mit
- <classname>Zend_Feed_Reader</classname> bekannt ist.
- </para>
- <para>
- Als Ergebnis dieses Designs, ist der Rest sogar einleuchtend. Dahinter, wird jedes
- Datenset eines <classname>Zend_Feed_Reader</classname> Objekts wärend der
- Darstellungszeit in ein DOMDocument Objekt übersetzt indem die
- notwendigen Feed Elemente verwendet werden. Für jeden unterstützten Feed Typen gibt es
- beide, sowohl einen Atom 1.0 als auch einen <acronym>RSS</acronym> 2.0 Renderer. Die
- Verwendung von DOMDocument statt einer Template Lösung hat viele Vorteile.
- Der offensichtlichste ist die Möglichkeit das DOMDocument zu
- exportieren um es weiter zu bearbeiten und auf <acronym>PHP</acronym>
- <acronym>DOM</acronym> für die Korrakturen und richtige Darstellung zu setzen.
- </para>
- <para>
- Wie bei <classname>Zend_Feed_Reader</classname> ist
- <classname>Zend_Feed_Writer</classname> ein alleinstehender Ersatz für
- <classname>Zend_Feed</classname>'s Builder Architektur und nicht kompatibel mit diesen
- Klassen.
- </para>
- </sect2>
- <sect2 id="zend.feed.writer.architecture">
- <title>Architektur</title>
- <para>
- Die Architektur von <classname>Zend_Feed_Writer</classname> ist sehr einfach. Es hat
- zwei Kernsets von Klassen: Container und Renderer.
- </para>
- <para>
- Der Container enthält die Klassen <classname>Zend_Feed_Writer_Feed</classname> und
- <classname>Zend_Feed_Writer_Entry</classname>. Die Einstiegsklassen können bei jeder
- Feed Klasse angehängt werden. Der einzige Zweck dieses Containers ist es Daten über den
- zu erstellenden Feed zu sammelnindem ein einfaches Interface von Setter Methoden
- verwendet wird. Diese Methode führen einige Test zur Datenprüfung durch. Zum Beispiel
- prüft er übergebene <acronym>URI</acronym>s, Datum, usw. Diese Checks sind nicht an
- einen der Feed Standards gebunden. Das Container Objekt enthält auch Methoden welche die
- schnelle Darstellung und den Export des endgültigen Feeds erlauben, und Sie können auf
- Wunsch wiederverwendet werden.
- </para>
- <para>
- Wärend es zwei Daten Container gibt, gibt es vier Renderer - zwei passende Container
- Renderer pro unterstütztem Feed Typ. Der Renderer akzeptiert einen Container, und
- basierend auf seinem Container versucht er einen gültigen Feed zu erstellen. Wenn der
- Renderer nicht in der Lage ist einen gültigen Feed zu erstellen, möglicherweise weil dem
- Container ein obligatorischer Datenpunkt fehlt, dann wird er dies melden indem eine
- <classname>Exception</classname> geworfen wird. Wärend es möglich ist
- <classname>Exception</classname>s zu ignorieren, würde das diese alle standardmäßigen
- Sicherheiten entfernen welche sicherstellen das gültige Daten gesetzt wurden um einen
- komplett gültigen Feed darzustellen.
- </para>
- <para>
- Da das System in Datencontainer und Renderer geteilt ist, kann es Erweiterungen
- interessant machen. Eine typische Erweiterung welche namespaced Feeds und Entry Level
- Elemente bietet, muss selbst exakt die gleiche Atchitektur reflektieren, z.B. anbieten
- von Feed und Entry Level Daten Containern, und passenden Renderern. Das ist,
- glücklicherweise, keine komplexe Integrationsarbeit da alle Erweiterungsklassen einfach
- registriert und automatisch von den Kern Klassen verwendet werden. Wir kommen später in
- diesem Kapitel im Detail zu den Erweiterungen.
- </para>
- </sect2>
- <sect2 id="zend.feed.writer.getting.started">
- <title>Beginnen</title>
- <para>
- Die Verwendung von <classname>Zend_Feed_Reader</classname> ist so einfach wie das Setzen
- von Daten und dem Ausführen des Renderers. Hier ist ein Beispiel um einen minimalen Atom
- 1.0 Feed zu erstellen.
- </para>
- <programlisting language="php"><![CDATA[
- /**
- * Den Eltern Feed erstellen
- */
- $feed = new Zend_Feed_Writer_Feed;
- $feed->setTitle('Paddy\'s Blog');
- $feed->setLink('http://www.example.com');
- $feed->setFeedLink('http://www.example.com/atom', 'atom');
- $feed->addAuthor(array(
- 'name' => 'Paddy',
- 'email' => 'paddy@example.com',
- 'uri' => 'http://www.example.com',
- ));
- $feed->setDateModified(time());
- $feed->addHub('http://pubsubhubbub.appspot.com/');
- /**
- * Einen oder mehrere Einträge hinzufügen. Beachten das Einträge
- * manuell hinzugefügt werden müssen sobald Sie erstellt wurden
- */
- $entry = $feed->createEntry();
- $entry->setTitle('All Your Base Are Belong To Us');
- $entry->setLink('http://www.example.com/all-your-base-are-belong-to-us');
- $entry->addAuthor(array(
- 'name' => 'Paddy',
- 'email' => 'paddy@example.com',
- 'uri' => 'http://www.example.com',
- ));
- $entry->setDateModified(time());
- $entry->setDateCreated(time());
- $entry->setDescription(
- 'Die Schwierigkeiten erklären Spiele ins englische zu portieren.'
- );
- $entry->setContent(
- 'Ich schreibe diesen Artikel nicht. Das Beispiel ist lang genug ;).');
- $feed->addEntry($entry);
- /**
- * Den ergebenden Feed in Atom 1.0 darstellen und $out zuordnen. Man kann
- * "atom" mit "rss" ersetzen um einen RSS 2.0 feed zu erstellen
- */
- $out = $feed->export('atom');
- ]]></programlisting>
- <para>
- Die dargestellt Ausgabe sollte folgende sein:
- </para>
- <programlisting language="xml"><![CDATA[
- <?xml version="1.0" encoding="utf-8"?>
- <feed xmlns="http://www.w3.org/2005/Atom">
- <title type="text">Paddy's Blog</title>
- <subtitle type="text">Writing about PC Games since 176 BC.</subtitle>
- <updated>2009-12-14T20:28:18+00:00</updated>
- <generator uri="http://framework.zend.com" version="1.10.0alpha">
- Zend_Feed_Writer
- </generator>
- <link rel="alternate" type="text/html" href="http://www.example.com"/>
- <link rel="self" type="application/atom+xml"
- href="http://www.example.com/atom"/>
- <id>http://www.example.com</id>
- <author>
- <name>Paddy</name>
- <email>paddy@example.com</email>
- <uri>http://www.example.com</uri>
- </author>
- <link rel="hub" href="http://pubsubhubbub.appspot.com/"/>
- <entry>
- <title type="html"><![CDATA[All Your Base Are Belong To Us]]]]><![CDATA[></title>
- <summary type="html">
- <![CDATA[Exposing the difficultly of porting games to English.]]]]><![CDATA[>
- </summary>
- <published>2009-12-14T20:28:18+00:00</published>
- <updated>2009-12-14T20:28:18+00:00</updated>
- <link rel="alternate" type="text/html"
- href="http://www.example.com/all-your-base-are-belong-to-us"/>
- <id>http://www.example.com/all-your-base-are-belong-to-us</id>
- <author>
- <name>Paddy</name>
- <email>paddy@example.com</email>
- <uri>http://www.example.com</uri>
- </author>
- <content type="html">
- <![CDATA[I am not writing the article.
- The example is long enough as is ;).]]]]><![CDATA[>
- </content>
- </entry>
- </feed>
- ]]></programlisting>
- <para>
- Das ist ein perfekt gültiges Beispiel für Atom 1.0. Es sollte erwähnt sein das die
- Unterdrückung von obligatorischen Datenpunkten, wie dem Titel, eine
- <classname>Exception</classname> werfen wenn diese als Atom 1.0 dargestellt werden.
- Das unterscheidet sich für <acronym>RSS</acronym> 2.0 wo ein Titel unterdrückt werden
- kann solange eine Beschreibung vorhanden ist. Dadurch werden Exceptions geworfen die
- sich zwischen beiden Standards unterscheiden abhängig vom Renderer der Verwendet wird.
- Vom Design her wird <classname>Zend_Feed_Writer</classname> einen ungültigen Feed für
- keinen Standard darstellen solange der End-Benutzer nicht definiert das alle Exceptions
- ignoriert werden sollen.
- </para>
- </sect2>
- <sect2 id="zend.feed.writer.setting.feed.data.points">
- <title>Die Datenpunkte eines Feeds setzen</title>
- <para>
- Bevor ein Feed dargestellt werden kann, müssen zuerst die notwendigen Daten, für den
- Feed der dargestellt werden soll, gesetzt werden. Hierbei wird eine einfache Setter
- artige <acronym>API</acronym> verwendet welche auch als initiale Methode für die Prüfung
- von Daten herhält wenn diese gesetzt werden. Vom Design her entspricht die
- <acronym>API</acronym> stark der von <classname>Zend_Feed_Reader</classname> um
- Unklarheiten und Unsicherheiten zu vermeiden.
- </para>
- <para>
- <classname>Zend_Feed_Writer</classname> bietet diese <acronym>API</acronym> über seine
- Datencontainer Klassen <classname>Zend_Feed_Writer_Feed</classname> und
- <classname>Zend_Feed_Writer_Entry</classname> an. Diese Klassen speichern nahezu alle
- Feed Daten in einer vom Typ unabhängigen Art, was bedeutet das man jeden Datencontainer
- mit jedem Renderer wiederverwenden kann ohne das zusätzliche Arbeit notwendig ist. Beide
- Klassen sind auch offen für Erweiterungen, was bedeutet das eine Erweiterung seine
- eigenen Containerklassen definieren kann welche bei den Basis Containerklassen als
- Erweiterung registriert sind, und geprüft werden sobald irgendein Methodenaufruf die
- <methodname>__call()</methodname> Methode des Basiscontainers auslöst.
- </para>
- <para>
- Hier ist eine Zusammenfassung der Kern <acronym>API</acronym> für Feeds. Man sollte
- beachten das Sie nicht nur die Standards für <acronym>RSS</acronym> und Atom umfasst,
- sondern auch eine Anzahl von Erweiterungen welche in
- <classname>Zend_Feed_Writer</classname> enthalten sind. Die Benamung dieser Erweiterungs
- Methoden ist recht generisch - alle Erweiterungs Methoden arbeiten auf dem gleichen
- Level wie die Kern <acronym>API</acronym> da wir es erlauben jedes Erweiterungs Objekt
- seperat zu empfangen wenn das notwendig ist.
- </para>
- <table>
- <title>API Methoden auf Feed Level</title>
- <tgroup cols="2">
- <tbody>
- <row>
- <entry><methodname>setId()</methodname></entry>
- <entry>
- Setzt eine eindeutige ID die mit diesem Feed assoziiert ist. Für Atom
- 1.0 ist das ein atom:id Element, und für <acronym>RSS</acronym> 2.0 wird
- es als guid Element hinzugefügt. Diese sind optional solange ein Link
- hinzugefügt wird, wenn z.B. der Link als ID gesetzt ist.
- </entry>
- </row>
- <row>
- <entry><methodname>setTitle()</methodname></entry>
- <entry>Setzt den Titel des Feeds.</entry>
- </row>
- <row>
- <entry><methodname>setDescription()</methodname></entry>
- <entry>Setzt die textuelle Beschreibung des Feeds.</entry>
- </row>
- <row>
- <entry><methodname>setLink()</methodname></entry>
- <entry>
- Setzt eine <acronym>URI</acronym> zur <acronym>HTML</acronym> Website
- welche die gleichen oder ähnliche Informationen wie dieser Feed
- enthält (z.B. wenn der Feed von einem Blog ist, sollte er die
- <acronym>URI</acronym> des Blogs anbieten unter welche die
- <acronym>HTML</acronym> Version der Einträge gelesen werden können).
- </entry>
- </row>
- <row>
- <entry><methodname>setFeedLinks()</methodname></entry>
- <entry>
- Fügt einen Link zu einem <acronym>XML</acronym> Feed hinzu, entweder der
- erzeugte Feed oder eine alternative <acronym>URI</acronym> zeigen auf
- den gleichen Feed, aber in einem anderen Format. Es ist mindestens
- notwendig einen Link zum erstellten Feed zu inkludieren damit dieser
- eine identifizierbare endgültige <acronym>URI</acronym> hat, welche es
- dem Client erlaubt Änderungen des Orts mitzubekommen ohne das dauernde
- Umleitungen notwendig sind. Dieser Parameter ist ein Array von Arrays,
- wobei jedes Unter-Array die Schlüssel "type" und "uri" enthält. Der Type
- sollte "atom", "rss" oder "rdf" sein. Wenn ein Typ unterdrückt wird, ist
- er standardmäßig mit dem Typ identisch mit dem der Feed dargestellt
- wird.
- </entry>
- </row>
- <row>
- <entry><methodname>setAuthors()</methodname></entry>
- <entry>
- Setzt die Daten für Autoren. Der Parameter ist ein Array von Arrays
- wobei jedes Unter-Array die Schlüssel "name", "email" und "uri"
- enthalten kann. Der Wert "uri ist nur für Atom Feeds anwendbar da
- <acronym>RSS</acronym> keine Möglichkeit enthält Ihn anzuzeigen. Für
- <acronym>RSS</acronym> 2.0 werden bei der Darstellung zwei Elemente
- erzeugt - ein Autor Element welches die Referenz zur Email enthält und
- dem Namen in Klammern, und ein Dublin Core Creator Element welches nur
- den Namen enthält.
- </entry>
- </row>
- <row>
- <entry><methodname>setAuthor()</methodname></entry>
- <entry>
- Setzt die Daten für einen einzelnen Autor und folgt dem selben Format
- wie vorher für ein einzelnes Unter-Array beschrieben.
- </entry>
- </row>
- <row>
- <entry><methodname>setDateCreated()</methodname></entry>
- <entry>
- Setzt das Datum an dem dieser Feed erstellt wurde. Generell nur
- für Atom anwendbar wo es das Datum beschreibt zu der die Ressource,
- die von dem Atom 1.0 Dokument beschrieben wird, erstellt wurde. Der
- erwartete Parameter muss ein <acronym>UNIX</acronym> Timestamp oder ein
- <classname>Zend_Date</classname> Objekt sein.
- </entry>
- </row>
- <row>
- <entry><methodname>getDateModified()</methodname></entry>
- <entry>
- Setzt das Datum zu dem dieser Feed das letzte Mal geändert wurde. Der
- erwartete Parameter muss ein <acronym>UNIX</acronym> Timestamp oder ein
- <classname>Zend_Date</classname> Objekt sein.
- </entry>
- </row>
- <row>
- <entry><methodname>setLanguage()</methodname></entry>
- <entry>
- Setzt die Sprache des Feeds. Diese wird unterdrückt solange Sie nicht
- gesetzt ist.
- </entry>
- </row>
- <row>
- <entry><methodname>getGenerator()</methodname></entry>
- <entry>
- Erlaubt es einen Generator zu setzen. Der Parameter sollte ein Array
- sein welche die Schlüssel "name", "version" und "uri" enthält. Wenn er
- unterdrückt wird, wird ein standardmäßiger Generator hinzugefügt welcher
- auf <classname>Zend_Feed_Writer</classname>, die aktuelle Version vom
- Zend Framework und die <acronym>URI</acronym> des Frameworks verweist.
- </entry>
- </row>
- <row>
- <entry><methodname>setCopyright()</methodname></entry>
- <entry>Setzt eine Copyright Notiz die mit dem Feed assoziiert ist.</entry>
- </row>
- <row>
- <entry><methodname>setHubs()</methodname></entry>
- <entry>
- Akzeptiert ein Array von Pubsubhubbub Hub Endpunkten die im Feed als
- Atom Links dargestellt werden damit PuSH Abonnenten den eigenen Feed
- abbonieren können. Es ist zu beachten das man einen Pubsubhubbub
- Herausgeber implementieren muss damit Real-Time Updates ermöglicht
- werden. Ein Herausgeber kann implementiert werden indem
- <classname>Zend_Feed_Pubsubhubbub_Publisher</classname> verwendet wird.
- </entry>
- </row>
- <row>
- <entry><methodname>setCategories()</methodname></entry>
- <entry>
- Akzepziert ein Array an Kategorien für die Darstellung, wobei jedes
- Element selbst ein Array ist dessen möglich Schlüssel "term", "label"
- und "scheme" enthalten. "term" ist typischerweise der Name einer
- Kategorie welche für die Aufnahme in einer <acronym>URI</acronym>
- passen. "label" kann ein menschlich lesbarer Name einer Kategorie sein
- der spezielle Zeichen unterstützt (er wird wärend der Darstellung
- kodiert) und ist ein benötigter Schlüssel. "scheme" (im
- <acronym>RSS</acronym> auch die Domain genannt) ist optional muss aber
- eine gültige <acronym>URI</acronym> sein.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </sect2>
- <sect2 id="zend.feed.writer.setting.entry.data.points">
- <title>Setzen der Datenpunkt für Einträge</title>
- <para>
- Hier ist eine Zusammenfassung der Kern <acronym>API</acronym> für Einträge und Elemente.
- Man sollte beachten das Sie nicht nur die Standards für <acronym>RSS</acronym> und Atom
- umfasst, sondern auch eine Anzahl von Erweiterungen welche in
- <classname>Zend_Feed_Writer</classname> enthalten sind. Die Benamung dieser Erweiterungs
- Methoden ist recht generisch - alle Erweiterungs Methoden arbeiten auf dem gleichen
- Level wie die Kern <acronym>API</acronym> da wir es erlauben jedes Erweiterungs Objekt
- seperat zu empfangen wenn das notwendig ist.
- </para>
- <table>
- <title>API Methoden auf Eintrags Level</title>
- <tgroup cols="2">
- <tbody>
- <row>
- <entry><methodname>setId()</methodname></entry>
- <entry>
- Setzt eine eindeutige ID die mit diesem Feed assoziiert ist. Für Atom
- 1.0 ist das ein atom:id Element, und für <acronym>RSS</acronym> 2.0 wird
- es als guid Element hinzugefügt. Diese sind optional solange ein Link
- hinzugefügt wird, wenn z.B. der Link als ID gesetzt ist.
- </entry>
- </row>
- <row>
- <entry><methodname>setTitle()</methodname></entry>
- <entry>Setzt den Titel des Feeds.</entry>
- </row>
- <row>
- <entry><methodname>setDescription()</methodname></entry>
- <entry>Setzt die textuelle Beschreibung des Feeds.</entry>
- </row>
- <row>
- <entry><methodname>setLink()</methodname></entry>
- <entry>
- Setzt eine <acronym>URI</acronym> zur <acronym>HTML</acronym> Website
- welche die gleichen oder ähnliche Informationen wie dieser Feed
- enthält (z.B. wenn der Feed von einem Blog ist, sollte er die
- <acronym>URI</acronym> des Blogs anbieten unter welche die
- <acronym>HTML</acronym> Version der Einträge gelesen werden können).
- </entry>
- </row>
- <row>
- <entry><methodname>setFeedLinks()</methodname></entry>
- <entry>
- Fügt einen Link zu einem <acronym>XML</acronym> Feed hinzu, entweder der
- erzeugte Feed oder eine alternative <acronym>URI</acronym> zeigen auf
- den gleichen Feed, aber in einem anderen Format. Es ist mindestens
- notwendig einen Link zum erstellten Feed zu inkludieren damit dieser
- eine identifizierbare endgültige <acronym>URI</acronym> hat, welche es
- dem Client erlaubt Änderungen des Orts mitzubekommen ohne
- das dauernde Umleitungen notwendig sind. Dieser Parameter ist ein Array
- von Arrays, wobei jedes Unter-Array die Schlüssel "type" und "uri"
- enthält. Der Type sollte "atom", "rss" oder "rdf" sein. Wenn ein Typ
- unterdrückt wird, ist er standardmäßig mit dem Typ identisch mit dem
- der Feed dargestellt wird.
- </entry>
- </row>
- <row>
- <entry><methodname>setAuthors()</methodname></entry>
- <entry>
- Setzt die Daten für Autoren. Der Parameter ist ein Array von Arrays
- wobei jedes Unter-Array die Schlüssel "name", "email" und "uri"
- enthalten kann. Der Wert "uri ist nur für Atom Feeds anwendbar da
- <acronym>RSS</acronym> keine Möglichkeit enthält Ihn anzuzeigen. Für
- <acronym>RSS</acronym> 2.0 werden bei der Darstellung zwei Elemente
- erzeugt - ein Autor Element welches die Referenz zur Email enthält und
- dem Namen in Klammern, und ein Dublin Core Creator Element welches nur
- den Namen enthält.
- </entry>
- </row>
- <row>
- <entry><methodname>setAuthor()</methodname></entry>
- <entry>
- Setzt die Daten für einen einzelnen Autor und folgt dem selben Format
- wie vorher für ein einzelnes Unter-Array beschrieben.
- </entry>
- </row>
- <row>
- <entry><methodname>setDateCreated()</methodname></entry>
- <entry>
- Setzt das Datum an dem dieser Feed erstellt wurde. Generell nur
- für Atom anwendbar wo es das Datum beschreibt zu der die Ressource,
- die von dem Atom 1.0 Dokument beschrieben wird, erstellt wurde. Der
- erwartete Parameter muss ein <acronym>UNIX</acronym> Timestamp oder ein
- <classname>Zend_Date</classname> Objekt sein.
- </entry>
- </row>
- <row>
- <entry><methodname>getDateModified()</methodname></entry>
- <entry>
- Setzt das Datum zu dem dieser Feed das letzte Mal geändert wurde. Der
- erwartete Parameter muss ein <acronym>UNIX</acronym> Timestamp oder ein
- <classname>Zend_Date</classname> Objekt sein.
- </entry>
- </row>
- <row>
- <entry><methodname>setLanguage()</methodname></entry>
- <entry>
- Setzt die Sprache des Feeds. Diese wird unterdrückt solange Sie nicht
- gesetzt ist.
- </entry>
- </row>
- <row>
- <entry><methodname>getGenerator()</methodname></entry>
- <entry>
- Erlaubt es einen Generator zu setzen. Der Parameter sollte ein Array
- sein welche die Schlüssel "name", "version" und "uri" enthält. Wenn er
- unterdrückt wird, wird ein standardmäßiger Generator hinzugefügt welcher
- auf <classname>Zend_Feed_Writer</classname>, die aktuelle Version vom
- Zend Framework und die <acronym>URI</acronym> des Frameworks verweist.
- </entry>
- </row>
- <row>
- <entry><methodname>setCopyright()</methodname></entry>
- <entry>Setzt eine Copyright Notiz die mit dem Feed assoziiert ist.</entry>
- </row>
- <row>
- <entry><methodname>setHubs()</methodname></entry>
- <entry>
- Akzeptiert ein Array von Pubsubhubbub Hub Endpunkten die im Feed als
- Atom Links dargestellt werden damit PuSH Abonnenten den eigenen Feed
- abbonieren können. Es ist zu beachten das man einen Pubsubhubbub
- Herausgeber implementieren muss damit Real-Time Updates ermöglicht
- werden. Ein Herausgeber kann implementiert werden indem
- <classname>Zend_Feed_Pubsubhubbub_Publisher</classname> verwendet wird.
- </entry>
- </row>
- <row>
- <entry><methodname>setCategories()</methodname></entry>
- <entry>
- Akzepziert ein Array an Kategorien für die Darstellung, wobei jedes
- Element selbst ein Array ist dessen möglich Schlüssel "term", "label"
- und "scheme" enthalten. "term" ist typischerweise der Name einer
- Kategorie welche für die Aufnahme in einer <acronym>URI</acronym>
- passen. "label" kann ein menschlich lesbarer Name einer Kategorie sein
- der spezielle Zeichen unterstützt (er wird wärend der Darstellung
- kodiert) und ist ein benötigter Schlüssel. "scheme" (im
- <acronym>RSS</acronym> auch die Domain genannt) ist optional muss aber
- eine gültige <acronym>URI</acronym> sein.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </sect2>
- </sect1>
|