Programmer's Reference Guide
| Einführung |
Feeds importieren
Zend_Feed ermöglicht es Entwicklern, Feeds sehr einfach abzurufen. Wenn Du die
URI eines Feeds kennst, verwende einfach die Zend_Feed::import() Methode:
<?php
$feed = Zend_Feed::import('http://feeds.example.com/feedName');
Du kannst Zend_Feed außerdem verwenden, um Inhalte eines Feeds aus einer Datei
oder die Inhalte aus einem PHP String Variable zu abzurufen.
<?php
// Feeds von einer Textdatei importieren
$feedFromFile = Zend_Feed::importFile('feed.xml');
// Feeds von einer PHP String Variable importieren
$feedFromPHP = Zend_Feed::importString($feedString);
In jedem der obigen Beispiele wird bei Erfolg abhängig vom Typ des Feeds ein Objekt einer
Klasse zurück gegeben, welche Zend_Feed_Abstract erweitert. Wird ein RSS Feed
durch eine der obigen Importiermethoden abgerufen, wird eine Zend_Feed_Rss
Objekt zurückgegeben. Auf der anderen Seite wird beim Importieren eines Atom Feeds ein
Zend_Feed_Atom Objekt zurückgegeben. Bei Fehlern, wie z.B. ein unlesbarer oder
nicht wohlgeformter Feed, werfen die Importiermethoden auch ein
Zend_Feed_Exception Objekt.
Eigene Feeds
Zend_Feed ermöglicht es Entwicklern Ihre eigenen Feeds sehr einfach zu erstellen. Man
muß nur ein Array erstellen und es in Zend_Feed importieren, Dieses Array kann mit
Zend_Feed::importArray() oder mit Zend_Feed::importBuilder()
importiert werden. Im letzteren Fall wird das Array on the Fly durch eine eigene Datenquelle
berechnet die Zend_Feed_Builder_Interface implementiert.
Importieren eines eigenen Arrays
<?php
// Importieren eines Feeds von einem Array
$atomFeedFromArray = Zend_Feed::importArray($array);
// Die folgende Zeile ist identisch mit der obigen; standardmäßig wird eine Zend_Feed_Atom Instanz zurückgegeben
$atomFeedFromArray = Zend_Feed::importArray($array, 'atom');
// Importieren eines RSS Feeds von einem Array
$rssFeedFromArray = Zend_Feed::importArray($array, 'rss');
Das Format des Arrays muß dieser Struktur entsprechen:
<?php
array(
'title' => 'Titel des Feeds', // benötigt
'link' => 'Kanonische URL zu dem Feed', // benötigt
'lastUpdate' => 'Zeitstempel des Update Datums', // optional
'published' => 'Zeitstempel des Veröffentlichungs Datums', //optional
'charset' => 'Zeichensatz der textuellen Daten', // benötigt
'description' => 'Kurzbeschreibung des Feeds', //optional
'author' => 'Author, Veröffentlicher des Feeds', //optional
'email' => 'Email des Authors', //optional
'webmaster' => 'Email Adresse der Person die für technische Belange verantwortlich ist' // optional, ignoriert wenn Atom verwendet wird
'copyright' => 'Copyright Notiz', //optional
'image' => 'URL zu Bildern', //optional
'generator' => 'Ersteller', // optional
'language' => 'Sprache in der der Feed geschrieben ist', // optional
'ttl' => 'Wie lange ein Feed gecached werden kann bevor er erneut werden muß', // optional, ignoriert wenn Atom verwendet wird
'rating' => 'Die PICS Rate dieses Kanals', // optional, ignoriert wenn Atom verwendet wird
'cloud' => array(
'domain' => 'Domain der Wolke, e.g. rpc.sys.com' // benötigt
'port' => 'Port zu dem verbunden wird' // optional, standard ist 80
'path' => 'Pfad der Wolke, e.g. /RPC2' // benötigt
'registerProcedure' => 'Prozedur die aufgerufen wird, z.B. myCloud.rssPleaseNotify' // benötigt
'protocol' => 'Protokoll das verwendet wird, z.B. soap oder xml-rpc' // benötigt
), // eine Wolke die über Updates benachrichtigt wird // optional, ignoriert wenn Atom verwendet wird
'textInput' => array(
'title' => 'Die Überschrift des Senden Buttons im Texteingabefeld' // benötigt,
'description' => 'Beschreibt das Texteingabefeld' // benötigt
'name' => 'Der Name des Text Objekts im Texteingabefeld' // benötigt
'link' => 'Die URL des CGI Skripts das Texteingabe Anfragen bearbeitet' // benötigt
) // Eine Texteingabebox die im Feed angezeigt werden kann // optional, ignoriert wenn Atom verwendet wird
'skipHours' => array(
'hour in 24 format', // z.B. 13 (1pm)
// bis zu 24 Zeilen dessen Werte eine Nummer zwichen 0 und 23 sein müssen
) // Hinweise geben welche Stunden übersprungen werden können // optional, ignoriert wenn Atom verwendet wird
'skipDays ' => array(
'a day to skip', // z.B. Montag
// bus zu 7 Zeilen dessen Werte Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag oder Sonntag sind
) // Hinweise geben welche Tage übersprungen werden können // optional, ignoriert wenn Atom verwendet wird
'itunes' => array(
'author' => 'Musiker Spalte' // optional, Standard der Wert der author Spalte
'owner' => array(
'name' => 'Name des Eigentümers' // optional, Standard ist der Wert der author Spalte
'email' => 'Email des Eigentümers' // optional, Standard ist der Haupt email Wert
) // Eigentümer des Podcasts // optional
'image' => 'Album/Podcast Bild' // optional, Standard ist der image Wert
'subtitle' => 'Kurzbeschreibung' // optional, Standard ist der description Wert
'summary' => 'Langbeschreibung' // optional, Standard ist der description Wert
'block' => 'Verhindern das eine Episode erscheint (ja|nein)' // optional
'category' => array(
array('main' => 'Hauptkategorie', // benötigt
'sub' => 'Unterkategorie' // optional
),
// bis zu 3 Zeilen
) // 'Kategoriespalte und iTunes Music Store Browse' // benötigt
'explicit' => 'Elterliche Anweisungsspalte (ja|nein|löschen)' // optional
'keywords' => 'Eine kommagetrennte Liste von maximal 12 Schlüsselwörtern' // optional
'new-feed-url' => 'Verwendet um iTunes über eine neue URL Lokation zu informieren' // optional
) // Itunes Erweiterungsdaten // optional, ignoriert wenn Atom verwendet wird
'entries' => array(
array(
'title' => 'Titel des Feedeintrags', // benötigt
'link' => 'URL zum Feedeintrag', // benötigt
'description' => 'Kurzversion des Feedeintrags', // nur Text, kein HTML, benötigt
'guid' => 'Id des Artikels, wenn nicht angegeben wird der link Wert verwendet', //optional
'content' => 'Langversion', // kann HTML enthalten, optional
'lastUpdate' => 'Zeitstempel des Veröffnetlichungsdatums', // optional
'comments' => 'Kommentarseite des Feedeintrags', // optional
'commentRss' => 'Die FeedURL der zugehörenden Kommentare', // optional
'source' => array(
'title' => 'Titel der Originalen Quelle' // benötigt
'url' => 'URL der originalen Quelle' // benötigt
) // Originale Quelle des Feedeintrags // optional
'category' => array(
array(
'term' => 'Überschrift der ersten Kategorie' // benötigt
'scheme' => 'URL die das Kategorisierungsschema identifiziert' // optional
),
array(
//Daten der zweiten Kategorie und so weiter
)
) // Liste der zugeordneten Kategorien // optional
'enclosure' => array(
array(
'url' => 'URL des verlinkten Anhangs' // benötigt
'type' => 'Mime Typ des Anhangs' // optional
'length' => 'Länge des verlinkten Inhalts oktal' // optional
),
array(
// Daten für den zweiten Anhang und so weiter
)
) // Liste der Anhänge des Feedeintrags // optional
),
array(
// Daten für den zweiten Eintrag und so weiter
)
)
);
Referenzen:
-
RSS 2.0 Spezifikation: » RSS 2.0
-
Atom Spezifikation: » RFC 4287
-
WFW Spezifikation: » Gut geformtes Web
-
iTunes Spezifikation: » iTunes Technische Spezifikation
Importieren einer eigenen Daten Quelle
Eine Zend_Feed Instanz kann von jeder Datenquelle erstellt werden die
Zend_Feed_Builder_Interface implementiert. Die getHeader() und
getEntries() Methoden müssen implementiert werden damit das Objekt mit
Zend_Feed::importBuilder() verwendet werden kann. Als einfache Referenz
Implementation kann Zend_Feed_Builder verwendet werden, welches ein Array im
Kontruktor entgegen nimmt, einige einfache Prüfungen durchführt, und anschließend in der
importBuilder() Methode verwendet werden kann. Die getHeader()
Methode muß eine Instanz von Zend_Feed_Builder_Header zurückgeben, und
getEntries() muß ein Array von Zend_Feed_Builder_Entry Instanzen
zurückgeben.
Hinweis:
Zend_Feed_Builderarbeitet als konkrete Implementation um die Verwendung zu demonstrieren. Benutzer sind angehlaten Ihre eigenen Klassen zu Erstellen umZend_Feed_Builder_Interfacezu implementieren.
Hier ist ein Beispiel der Verwendung von Zend_Feed::importBuilder():
<?php
// Einen Feed von einer eigenen Erstellungsquelle importieren
$atomFeedFromArray = Zend_Feed::importBuilder(new Zend_Feed_Builder($array));
// Die folgende Zeile ist mit der obigen äquivalent; standardmäßig wird eine Zend_Feed_Atom Instanz zurückgegeben
$atomFeedFromArray = Zend_Feed::importArray(new Zend_Feed_Builder($array), 'atom');
// Einen RSS Feeed von einem Array von eigenen Erstellungsquellen importieren
$rssFeedFromArray = Zend_Feed::importArray(new Zend_Feed_Builder($array), 'rss');
Ausgeben des Inhalts eines Feeds
Um den Inhalt einer Zend_Feed_Abstract Instanz auszugeben können die
send() oder saveXml() Methoden verwendet werden.
<?php
assert($feed instanceof Zend_Feed_Abstract);
// Den Feed an der Standardausgabe ausgeben
print $feed->saveXML();
// HTTP Header und den Feed ausgeben
$feed->send();
| Einführung |
Select a Version
Languages Available
Components
Search the Manual
Navigation
- Programmierer Referenzhandbuch
- Programmierer Referenzhandbuch
- Zend_Feed
- Einführung
- Feeds importieren
- Feeds von Websites abrufen
- Einen RSS Feed konsumieren
- Einen Atom Feed konsumieren
- Einen einzelnen Atom Eintrag konsumieren
- Verändern der Feed- und Eintragsstruktur
- Eigene Klassen für Feeds und Einträge
