<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: no -->
<sect1 id="zend.feed.introduction">
    <title>Introduction</title>

    <para>
        Le composant <classname>Zend_Feed</classname> offre des services permettant de
        traiter des flux <acronym>RSS</acronym> 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. <classname>Zend_Feed</classname> 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 <acronym>XML</acronym>. À l'avenir, la prise en charge des
        modifications pourrait aussi inclure la prise en charge du protocole de publication
        Atom.
    </para>

    <para>
        Sur le plan de la programmation, <classname>Zend_Feed</classname> est constitué d'une
        classe de base <classname>Zend_Feed</classname> et de classes de base abstraites
        <classname>Zend_Feed_Abstract</classname> et
        <classname>Zend_Feed_Entry_Abstract</classname>, permettant de représenter respectivement
        des flux et des entrées ; <classname>Zend_Feed</classname> contient aussi des
        implémentations particulières de ces classes abstraites pour les flux et entrées <acronym>RSS</acronym> et
        Atom ainsi qu'un assistant en coulisses qui assure le bon fonctionnement de la syntaxe
        intuitive.
    </para>

    <para>
        Dans l'exemple ci-dessous, nous illustrons une utilisation simple de
        <classname>Zend_Feed</classname>&#160;: on obtient un flux <acronym>RSS</acronym> et on enregistre les
        portions du flux qui nous intéressent dans un tableau <acronym>PHP</acronym> simple, qui pourra ensuite être
        utilisé pour afficher les données, les stocker dans une base de données etc.
    </para>

    <note>
        <title>Attention</title>
        <para>
            Beaucoup de flux <acronym>RSS</acronym> ont à leur disposition différentes propriétés, pour les
            canaux comme pour les éléments. La spécification <acronym>RSS</acronym> spécifie beaucoup de propriétés
            optionnelles et gardez donc cela à l'esprit lorsque vous écrivez du code qui manipule
            des données <acronym>RSS</acronym>.
        </para>
    </note>

    <example id="zend.feed.introduction.example.rss">
        <title>Manipuler des données RSS avec Zend_Feed</title>

        <programlisting language="php"><![CDATA[
// 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()
        );
}
]]></programlisting>
    </example>
</sect1>
