| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 |
- <?xml version="1.0" encoding="utf-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.feed.consuming-rss">
- <title>Consommer un flux RSS</title>
- <para>
- Lire un flux <acronym>RSS</acronym> se résume à instancier un objet <classname>Zend_Feed_Rss</classname>
- en passant l'URL du flux :
- </para>
- <programlisting language="php"><![CDATA[
- $canal = new Zend_Feed_Rss('http://rss.exemple.com/nomDuCanal');
- ]]></programlisting>
- <para>
- Si une erreur a lieu lors de l'obtention du flux, une
- <classname>Zend_Feed_Exception</classname> sera déclenchée.
- </para>
- <para>
- Une fois que vous disposez d'un objet "flux <acronym>RSS</acronym>", vous pouvez accéder aux propriétés
- <acronym>RSS</acronym> standard du canal, et ce directement à partir de l'objet :
- </para>
- <programlisting language="php"><![CDATA[
- echo $canal->title();
- ]]></programlisting>
- <para>
- Notez la syntaxe utilisée : un appel de fonction.
- <classname>Zend_Feed</classname> utilise une convention selon laquelle les propriétés sont
- traitées comme des objets <acronym>XML</acronym> si elles sont demandées au moyen de la syntaxe
- <code>$obj->propriété</code> et comme des chaînes si elles sont demandées au moyen de la
- syntaxe <code>$obj->propriété()</code>. Ceci permet d'accéder à la totalité du contenu
- textuel d'un nœud particulier tout comme à l'ensemble des enfants de ce nœud.
- </para>
- <para>
- Si les propriétés du canal possèdent des attributs, ils sont accessibles à l'aide de
- l'indexage <acronym>PHP</acronym> :
- </para>
- <programlisting language="php"><![CDATA[
- echo $canal->category['domain'];
- ]]></programlisting>
- <para>
- Comme les attributs <acronym>XML</acronym> ne peuvent avoir des enfants, la syntaxe
- <code>$obj->propriété['attribut']()</code> n'est pas nécessaire pour accéder aux valeurs
- des attributs.
- </para>
- <para>
- La plupart du temps vous voudrez itérer sur le flux et réaliser quelque chose avec
- ses entrées. <classname>Zend_Feed_Abstract</classname> implémente l'interface
- <code>iterator</code> de <acronym>PHP</acronym>, ce qui résume au code suivant l'affichage des titres de tous
- les articles du canal :
- </para>
- <programlisting language="php"><![CDATA[
- foreach ($canal as $element) {
- echo $element->title() . "\n";
- }
- ]]></programlisting>
- <para>
- Si vous n'êtes pas un familier de <acronym>RSS</acronym>, voici les éléments standard associés au
- canal <acronym>RSS</acronym> et à ses éléments pris séparément (les entrées).
- </para>
- <para>Les éléments requis pour les canaux sont :</para>
- <para>
- <itemizedlist>
- <listitem>
- <para><code>title</code> (titre) : le nom du canal</para>
- </listitem>
- <listitem>
- <para>
- <code>link</code> (lien) : l'URL du site Web correspondant au canal
- </para>
- </listitem>
- <listitem>
- <para>
- <code>description</code> : une ou plusieurs phrases décrivant le canal
- </para>
- </listitem>
- </itemizedlist>
- </para>
- <para>Les éléments optionnels pour les canaux sont :</para>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- <code>pubDate</code> (date de publication) : la date de publication de
- l'ensemble, au format <acronym>RFC</acronym> 822
- </para>
- </listitem>
- <listitem>
- <para>
- <code>language</code> (langue) : la langue dans laquelle est écrit le
- canal
- </para>
- </listitem>
- <listitem>
- <para>
- <code>category</code> (catégorie) : un ou plusieurs noms de catégorie
- (spécifiés au moyen de plusieurs balises) auquel appartient le canal
- </para>
- </listitem>
- </itemizedlist>
- </para>
- <para>
- Les éléments <acronym>RSS</acronym> <code><item></code> n'ont pas d'éléments requis particulier.
- Cependant soit <code>title</code> soit <code>description</code> doivent être
- présents.
- </para>
- <para>Les éléments communs sont :</para>
- <para>
- <itemizedlist>
- <listitem>
- <para><code>title</code> (titre) : le titre de l'élément</para>
- </listitem>
- <listitem>
- <para><code>link</code> (lien) : l'URL de l'élément</para>
- </listitem>
- <listitem>
- <para><code>description</code> : un résumé de l'élément</para>
- </listitem>
- <listitem>
- <para><code>author</code> (auteur) : l'adresse e-mail de l'auteur</para>
- </listitem>
- <listitem>
- <para>
- <code>category</code> (catégorie) : une ou plusieurs catégories auquel
- appartient l'élément
- </para>
- </listitem>
- <listitem>
- <para>
- <code>comments</code> (commentaires) : l'URL des commentaires relatifs à
- cet élément
- </para>
- </listitem>
- <listitem>
- <para>
- <code>pubDate</code> (date de publication) : la date à laquelle l'élément
- a été publié, au format <acronym>RFC</acronym> 822
- </para>
- </listitem>
- </itemizedlist>
- </para>
- <para>
- Dans votre code vous pouvez toujours tester si un élément est non-vide au moyen du
- test suivant :
- </para>
- <programlisting language="php"><![CDATA[
- if ($element->nomPropriete()) {
- // ... traitement
- }
- ]]></programlisting>
- <para>
- Si vous utilisez à la place de la condition <code>$element->nomPropriete</code>,
- vous obtiendrez toujours un objet qui, même vide, sera évalué comme <constant>TRUE</constant>, donc
- le test échouera.
- </para>
- <para>
- Pour plus d'informations, la spécification <acronym>RSS</acronym> 2.0 officielle est disponible à
- l'adresse : <ulink url="http://blogs.law.harvard.edu/tech/rss">
- http://blogs.law.harvard.edu/tech/rss</ulink>
- </para>
- </sect1>
|