Zend_Feed-ConsumingRss.xml 6.3 KB

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