Zend_Feed-ConsumingRss.xml 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.feed.consuming-rss">
  5. <title>Consommer un flux RSS</title>
  6. <para>
  7. Lire un flux <acronym>RSS</acronym> se résume à instancier un objet <classname>Zend_Feed_Rss</classname>
  8. en passant l'URL du flux&#160;:
  9. </para>
  10. <programlisting language="php"><![CDATA[
  11. $canal = new Zend_Feed_Rss('http://rss.exemple.com/nomDuCanal');
  12. ]]></programlisting>
  13. <para>
  14. Si une erreur a lieu lors de l'obtention du flux, une
  15. <classname>Zend_Feed_Exception</classname> sera déclenchée.
  16. </para>
  17. <para>
  18. Une fois que vous disposez d'un objet "flux <acronym>RSS</acronym>", vous pouvez accéder aux propriétés
  19. <acronym>RSS</acronym> standard du canal, et ce directement à partir de l'objet&#160;:
  20. </para>
  21. <programlisting language="php"><![CDATA[
  22. echo $canal->title();
  23. ]]></programlisting>
  24. <para>
  25. Notez la syntaxe utilisée&#160;: un appel de fonction.
  26. <classname>Zend_Feed</classname> utilise une convention selon laquelle les propriétés sont
  27. traitées comme des objets <acronym>XML</acronym> si elles sont demandées au moyen de la syntaxe
  28. <code>$obj-&gt;propriété</code> et comme des chaînes si elles sont demandées au moyen de la
  29. syntaxe <code>$obj-&gt;propriété()</code>. Ceci permet d'accéder à la totalité du contenu
  30. textuel d'un nœud particulier tout comme à l'ensemble des enfants de ce nœud.
  31. </para>
  32. <para>
  33. Si les propriétés du canal possèdent des attributs, ils sont accessibles à l'aide de
  34. l'indexage <acronym>PHP</acronym>&#160;:
  35. </para>
  36. <programlisting language="php"><![CDATA[
  37. echo $canal->category['domain'];
  38. ]]></programlisting>
  39. <para>
  40. Comme les attributs <acronym>XML</acronym> ne peuvent avoir des enfants, la syntaxe
  41. <code>$obj-&gt;propriété['attribut']()</code> n'est pas nécessaire pour accéder aux valeurs
  42. des attributs.
  43. </para>
  44. <para>
  45. La plupart du temps vous voudrez itérer sur le flux et réaliser quelque chose avec
  46. ses entrées. <classname>Zend_Feed_Abstract</classname> implémente l'interface
  47. <code>iterator</code> de <acronym>PHP</acronym>, ce qui résume au code suivant l'affichage des titres de tous
  48. les articles du canal&#160;:
  49. </para>
  50. <programlisting language="php"><![CDATA[
  51. foreach ($canal as $element) {
  52. echo $element->title() . "\n";
  53. }
  54. ]]></programlisting>
  55. <para>
  56. Si vous n'êtes pas un familier de <acronym>RSS</acronym>, voici les éléments standard associés au
  57. canal <acronym>RSS</acronym> et à ses éléments pris séparément (les entrées).
  58. </para>
  59. <para>Les éléments requis pour les canaux sont&#160;:</para>
  60. <para>
  61. <itemizedlist>
  62. <listitem>
  63. <para><code>title</code> (titre)&#160;: le nom du canal</para>
  64. </listitem>
  65. <listitem>
  66. <para>
  67. <code>link</code> (lien)&#160;: l'URL du site Web correspondant au canal
  68. </para>
  69. </listitem>
  70. <listitem>
  71. <para>
  72. <code>description</code>&#160;: une ou plusieurs phrases décrivant le canal
  73. </para>
  74. </listitem>
  75. </itemizedlist>
  76. </para>
  77. <para>Les éléments optionnels pour les canaux sont&#160;:</para>
  78. <para>
  79. <itemizedlist>
  80. <listitem>
  81. <para>
  82. <code>pubDate</code> (date de publication)&#160;: la date de publication de
  83. l'ensemble, au format <acronym>RFC</acronym> 822
  84. </para>
  85. </listitem>
  86. <listitem>
  87. <para>
  88. <code>language</code> (langue)&#160;: la langue dans laquelle est écrit le
  89. canal
  90. </para>
  91. </listitem>
  92. <listitem>
  93. <para>
  94. <code>category</code> (catégorie)&#160;: un ou plusieurs noms de catégorie
  95. (spécifiés au moyen de plusieurs balises) auquel appartient le canal
  96. </para>
  97. </listitem>
  98. </itemizedlist>
  99. </para>
  100. <para>
  101. Les éléments <acronym>RSS</acronym> <code>&lt;item&gt;</code> n'ont pas d'éléments requis particulier.
  102. Cependant soit <code>title</code> soit <code>description</code> doivent être
  103. présents.
  104. </para>
  105. <para>Les éléments communs sont&#160;:</para>
  106. <para>
  107. <itemizedlist>
  108. <listitem>
  109. <para><code>title</code> (titre)&#160;: le titre de l'élément</para>
  110. </listitem>
  111. <listitem>
  112. <para><code>link</code> (lien)&#160;: l'URL de l'élément</para>
  113. </listitem>
  114. <listitem>
  115. <para><code>description</code>&#160;: un résumé de l'élément</para>
  116. </listitem>
  117. <listitem>
  118. <para><code>author</code> (auteur)&#160;: l'adresse e-mail de l'auteur</para>
  119. </listitem>
  120. <listitem>
  121. <para>
  122. <code>category</code> (catégorie)&#160;: une ou plusieurs catégories auquel
  123. appartient l'élément
  124. </para>
  125. </listitem>
  126. <listitem>
  127. <para>
  128. <code>comments</code> (commentaires)&#160;: l'URL des commentaires relatifs à
  129. cet élément
  130. </para>
  131. </listitem>
  132. <listitem>
  133. <para>
  134. <code>pubDate</code> (date de publication)&#160;: la date à laquelle l'élément
  135. a été publié, au format <acronym>RFC</acronym> 822
  136. </para>
  137. </listitem>
  138. </itemizedlist>
  139. </para>
  140. <para>
  141. Dans votre code vous pouvez toujours tester si un élément est non-vide au moyen du
  142. test suivant&#160;:
  143. </para>
  144. <programlisting language="php"><![CDATA[
  145. if ($element->nomPropriete()) {
  146. // ... traitement
  147. }
  148. ]]></programlisting>
  149. <para>
  150. Si vous utilisez à la place de la condition <code>$element-&gt;nomPropriete</code>,
  151. vous obtiendrez toujours un objet qui, même vide, sera évalué comme <constant>TRUE</constant>, donc
  152. le test échouera.
  153. </para>
  154. <para>
  155. Pour plus d'informations, la spécification <acronym>RSS</acronym> 2.0 officielle est disponible à
  156. l'adresse&#160;: <ulink url="http://blogs.law.harvard.edu/tech/rss">
  157. http://blogs.law.harvard.edu/tech/rss</ulink>
  158. </para>
  159. </sect1>