Table des matières
Le composant Zend_Feed
offre des services permettant de
traiter des flux RSS et Atom. Il permet d'accéder aux éléments d'un
flux, aux attributs d'un flux et aux attributs des entrées d'un flux,
tout cela au moyen d'une syntaxe intuitive. Zend_Feed
prend
aussi complètement en charge la modification de la structure des flux et
des entrées, avec la même syntaxe intuitive que précédemment, et il sait
transformer le résultat en XML. À l'avenir, la prise en charge des
modifications pourrait aussi inclure la prise en charge du protocole de
publication Atom.
Sur le plan de la programmation, Zend_Feed
est constitué
d'une classe de base Zend_Feed
et de classes de base
abstraites Zend_Feed_Abstract
et
Zend_Feed_EntryAbstract
, permettant de représenter
respectivement des flux et des entrées; Zend_Feed
contient
aussi des implémentations particulières de ces classes abstraites pour
les flux et entrées RSS et Atom ainsi qu'un assistant en coulisses qui
assure le bon fonctionnement de la syntaxe intuitive.
Dans l'exemple ci-dessous, nous illustrons une utilisation simple de
Zend_Feed
: on obtient un flux RSS et on enregistre les
portions du flux qui nous intéressent dans un tableau PHP simple, qui
pourra ensuite être utilisé pour afficher les données, les stocker dans
une base de données etc.
Note | |
---|---|
Beaucoup de flux RSS ont à leur disposition différentes propriétés, pour les canaux comme pour les éléments. La spécification RSS spécifie beaucoup de propriétés optionnelles et gardez donc cela à l'esprit lorsque vous écrivez du code qui manipule des données RSS. |
Exemple 4.1. Manipuler des données RSS avec Zend_Feed
<?php require_once 'Zend/Feed.php'; // on va chercher les dernières news de Slashdot try { $rssSlashdot = Zend_Feed::import('http://rss.slashdot.org/Slashdot/slashdot'); } catch (Zend_Feed_Exception $e) { // l'importation du flux a échoué echo "Une exception a été interceptée lors de l'importation du flux : {$e->getMessage()}\n"; exit; } // on initialise un tableau contenant les données du canal RSS $canal = array( 'titre' =>; $rssSlashdot->title(), 'lien' => $rssSlashdot->link(), 'description' => $rssSlashdot->description(), 'elements' => array() ); // on itère sur chaque élément du canal et on stocke les données qui nous intéressent foreach ($rssSlashdot as $elem) { $canal['elements'][] = array( 'titre' => $elem->title(), 'lien' => $elem->link(), 'description' => $elem->description() ); } ?>