2
0

Zend_Feed-ConsumingRss.xml 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. <sect1 id="zend.feed.consuming-rss">
  2. <title>Een RSS Feed lezen</title>
  3. <para>
  4. Een RSS feed lezen is zo eenvoudig als het instantiëren van een <code>Zend_Feed_Rss</code> object
  5. met het URI van de feed:
  6. </para>
  7. <programlisting role="php"><![CDATA[
  8. <?php
  9. $channel = new Zend_Feed_Rss('http://rss.example.com/channelName');
  10. ?>]]></programlisting>
  11. <para>
  12. Indien er fouten optreden bij het verkrijgen van de feed zal een <code>Zend_Feed_Exception</code>
  13. opgeworpen worden.
  14. </para>
  15. <para>
  16. Als je eenmaal een feed object hebt, kan je toegang verkrijgen voor eender welke van de standaard RSS
  17. kanaaleigenschappen op een direkte wijze:
  18. </para>
  19. <programlisting role="php"><![CDATA[
  20. <?php
  21. echo $channel->title();
  22. ?>]]></programlisting>
  23. <para>
  24. Merk de functiesyntax op. <code>Zend_Feed</code> gebruikt een overeenkomst om eigenschappen als
  25. XML objecten te behandelen indien ze werden opgevraagd met de variabele "getter" syntax
  26. (<code>$obj->property()</code>). Dit laat het toe de volledige tekst van eender welke individuele
  27. node te verkrijgen en toch volledig toegang te hebben tot alle childnodes.
  28. </para>
  29. <para>
  30. Indien kanaaleigenschappen attributen hebben zijn deze toegangkelijk door het gebruiken van de
  31. array syntax van PHP:
  32. </para>
  33. <programlisting role="php"><![CDATA[
  34. <?php
  35. echo $channel->category['domain'];
  36. ?>]]></programlisting>
  37. <para>
  38. Vermits XML attributen geen kinderen kunnen hebben is de functiesyntax niet nodig om toegang te krijgen
  39. tot attribuutwaarden.
  40. </para>
  41. <para>
  42. Meestal zal je door een feed willen loopen en iets met de entries willen doen.
  43. <code>Zend_Feed_Abstract</code> implementeert PHP's <code>Iterator</code> interface, dus het weergeven van alle titels van artikels in een kanaal is eenvoudig met:
  44. </para>
  45. <programlisting role="php"><![CDATA[
  46. <?php
  47. foreach ($channel as $item) {
  48. echo $item->title() . "\n";
  49. }
  50. ?>]]></programlisting>
  51. <para>
  52. Indien je niet vertrouwd bent met RSS zijn hier de standaard elementen die je kan verwachten in een
  53. RSS kanaal en in individuele RSS items (entries).
  54. </para>
  55. <para>
  56. Verplichte kanaalelementen:
  57. </para>
  58. <para>
  59. <itemizedlist>
  60. <listitem>
  61. <para><code>title</code> - De naam van het kanaal</para>
  62. </listitem>
  63. <listitem>
  64. <para><code>link</code> - De URL van de overeenkomstige website</para>
  65. </listitem>
  66. <listitem>
  67. <para><code>description</code> - Eén of meerdere zinnen die het kanaal beschrijven</para>
  68. </listitem>
  69. </itemizedlist>
  70. </para>
  71. <para>
  72. Gewone optionele elementen:
  73. </para>
  74. <para>
  75. <itemizedlist>
  76. <listitem>
  77. <para><code>pubDate</code> - De publicatiedatum van deze set van inhoud, in de
  78. vorm van een RFC 822 datum</para>
  79. </listitem>
  80. <listitem>
  81. <para><code>language</code> - De taal waarin het kanaal is geschreven</para>
  82. </listitem>
  83. <listitem>
  84. <para><code>category</code> - Eén of meerdere (gespecifieerd door het vermenigvuldigen
  85. van de afbakeningen) categoriën waartoe het kanaal behoort</para>
  86. </listitem>
  87. </itemizedlist>
  88. </para>
  89. <para>
  90. RSS <code>&lt;item&gt;</code> elementen hebben geen strict verplichte eigenschappen. Desalnietemin moeten
  91. ofwèl <code>title</code> of <code>description</code> aanwezig zijn.
  92. </para>
  93. <para>
  94. Gewone item elementen:
  95. </para>
  96. <para>
  97. <itemizedlist>
  98. <listitem>
  99. <para><code>title</code> - De titel van het item</para>
  100. </listitem>
  101. <listitem>
  102. <para><code>link</code> - De URL van het item</para>
  103. </listitem>
  104. <listitem>
  105. <para><code>description</code> - Een samenvatting van het item</para>
  106. </listitem>
  107. <listitem>
  108. <para><code>author</code> - Het e-mailadres van de auteur</para>
  109. </listitem>
  110. <listitem>
  111. <para><code>category</code> - Eén of meerdere categorieën waartoe het item behoort</para>
  112. </listitem>
  113. <listitem>
  114. <para><code>comments</code> - URL van commentaren verbonden aan dit item</para>
  115. </listitem>
  116. <listitem>
  117. <para><code>pubDate</code> - De datum van publicatie van het item in RFC 822 formaat</para>
  118. </listitem>
  119. </itemizedlist>
  120. </para>
  121. <para>
  122. Je kan in jouw code altijd testen of een element leeg is of niet met:
  123. </para>
  124. <programlisting role="php"><![CDATA[
  125. <?php
  126. if ($item->propname()) {
  127. // ... doorgaan.
  128. }
  129. ?>]]></programlisting>
  130. <para>
  131. Indien je in de plaats daarvan <code>$item->propname</code> gebruikt, zal je altijd een leeg
  132. object verkrijgen dat geëvalueerd zal worden als <code>TRUE</code> en je test zal niet juist zijn.
  133. </para>
  134. <para>
  135. Voor verdere informatie kan je terecht op de officiële RSS 2.0 specificatie:
  136. <ulink url="http://blogs.law.harvard.edu/tech/rss">http://blogs.law.harvard.edu/tech/rss</ulink>
  137. </para>
  138. </sect1>
  139. <!--
  140. vim:se ts=4 sw=4 et:
  141. -->