Hoofdstuk 12. Zend_Feed

Inhoudsopgave

12.1. Inleiding
12.2. Feeds importeren met Zend_Feed
12.3. Feeds verkregen van Web Paginas
12.4. Een RSS Feed lezen
12.5. Een Atom Feed lezen
12.6. Een enkele Atom entry lezen
12.7. Feed en Entry structuren wijzigen
12.8. Aangepaste Feed en Entry klassen

12.1. Inleiding

Zend_Feed verstrekt functionaliteiten om RSS en Atom feeds uit te lezen. Het verstrekt een intuïtieve syntax om elementen van de feeds te consulteren, attributen ervan en attributen van entries. Zend_Feed biedt ook uitgebreide ondersteuning voor het wijzigen van de structuur van een feed of een entry met dezelfde intuïtieve syntax, en om de resultaten terug in XLM te gieten. In de toekomst zou deze wijzigingsondersteuning ook het Atom Publishing Protocol kunnen ondersteunen.

Programmeerswijs bestaat Zend_Feed uit een basisklasse Zend_Feed, de abstracte klasse Zend_Feed_Abstract en de basisklasse Zend_Feed_EntryAbstract om Feeds en Entries voor te stellen, om specifieke implementaties van feeds en entries voor RSS en Atom voor te stellen, en een achter-de-scène helper om de intuïtieve syntax magie te doen werken.

In het hiernavolgende voorbeeld demonstreren we een eenvoudig gebruik om een RSS feed te verkrijgen en relevante delen ervan in een PHP array op te slaan, welke we dan zouden kunnen gebruiken voor het uitprinten van de data, de data op te slaan in een database enz...

[Opmerking] Be aware

Vele RSS feeds bieden verschillende eigenschappen van kanalen en items. De RSS specificatie verstrekt vele optionele eigenschappen, wees er dus van gewaar wanneer je code schrijft om met RSS data te werken.

Voorbeeld 12.1. Zend_Feed laten werken met RSS Feed Data

<?php
require_once 'Zend/Feed.php';

// Haal de laatste Slashdot hoofdtitels
try {
    $slashdotRss = Zend_Feed::import('http://rss.slashdot.org/Slashdot/slashdot');
} catch (Zend_Feed_Exception $e) {
    // feed import mislukt
    echo "Uitzondering gevangen bij het importeren van feed: {$e->getMessage()}\n";
    exit;
}

// De datakanaal Array initializeren
$channel = array(
    'title'       => $slashdotRss->title(),
    'link'        => $slashdotRss->link(),
    'description' => $slashdotRss->description(),
    'items'       => array()
    );

// Loop over elk item van het kanaal en sla relevante informatie op
foreach ($slashdotRss as $item) {
    $channel['items'][] = array(
        'title'       => $item->title(),
        'link'        => $item->link(),
        'description' => $item->description()
        );
}

?>