Zend_Feed-ConsumingRss.xml 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. <sect1 id="zend.feed.consuming-rss">
  2. <title>Odbieranie danych z kanału informacyjnego RSS</title>
  3. <para>
  4. Odczytywanie kanału RSS jest tak proste jak utworzenie obiektu <code>Zend_Feed_Rss</code> z adresem
  5. URL kanału przekazanym do konstruktora:
  6. </para>
  7. <programlisting role="php"><![CDATA[
  8. $channel = new Zend_Feed_Rss('http://rss.example.com/channelName');
  9. ]]>
  10. </programlisting>
  11. <para>
  12. Jeśli wystąpi jakiś błąd podczas obróbki danych pochodzących z kanału,
  13. zostanie wyrzucony wyjątek <code>Zend_Feed_Exception</code>.
  14. </para>
  15. <para>
  16. Kiedy już masz obiekt kanału informacyjnego, możesz łatwo uzyskać dostęp
  17. do standardowych właściwości kanału RSS bezpośrednio na obiekcie:
  18. </para>
  19. <programlisting role="php"><![CDATA[
  20. echo $channel->title();
  21. ]]>
  22. </programlisting>
  23. <para>
  24. Zwróć uwagę na składnie funkcji. <code>Zend_Feed</code> używa konwencji
  25. traktującej właściwości jak obiekt XML gdy próbujemy uzyskać do nich dostęp
  26. za pomocą składni "getter" (<code>$obj->property</code>) i jako łańcuch
  27. znaków gdy próbujemy uzyskać dostęp jak do metody (<code>$obj->property()</code>).
  28. To pozwala na pełny dostęp do danych tekstowych przy jednoczesnym dostępie
  29. do wszystkich niższych składników.
  30. </para>
  31. <para>
  32. Jeśli właściwości kanału mają atrybuty, są one dostępne przy użyciu składni
  33. tablic PHP:
  34. </para>
  35. <programlisting role="php"><![CDATA[
  36. echo $channel->category['domain'];
  37. ]]>
  38. </programlisting>
  39. <para>
  40. Since XML attributes cannot have children, method syntax is not necessary for accessing attribute
  41. values.
  42. </para>
  43. <para>
  44. Najczęściej będziesz chciał przejść pętlą po danych kanału i zrobić coś
  45. z jego wpisami. Klasa <code>Zend_Feed_Abstract</code> implementuje wbudowany
  46. w PHP interfejs <code>Iterator</code>, więc wyświetlenie wszystkich tytułów
  47. artykułów z kanału jest bardzo proste:
  48. </para>
  49. <programlisting role="php"><![CDATA[
  50. foreach ($channel as $item) {
  51. echo $item->title() . "\n";
  52. }
  53. ]]>
  54. </programlisting>
  55. <para>
  56. Jeśli nie jesteś obeznany z RSS, poniżej znajdziesz opis podstawowych
  57. składników, które możesz znaleść w kanale RSS i w jego indywidualnych
  58. elementach (wpisach).
  59. </para>
  60. <para>
  61. Wymagane składniki kanału:
  62. </para>
  63. <para>
  64. <itemizedlist>
  65. <listitem>
  66. <para><code>title</code> - Nazwa kanału</para>
  67. </listitem>
  68. <listitem>
  69. <para><code>link</code> - Adres URL strony internetowej odpowiadającej kanałowi</para>
  70. </listitem>
  71. <listitem>
  72. <para><code>description</code> - Opis kanału</para>
  73. </listitem>
  74. </itemizedlist>
  75. </para>
  76. <para>
  77. Opcjonalne składniki kanału:
  78. </para>
  79. <para>
  80. <itemizedlist>
  81. <listitem>
  82. <para><code>pubDate</code> - Data publikacji zawartości, format RFC 822 format</para>
  83. </listitem>
  84. <listitem>
  85. <para><code>language</code> - Język kanału</para>
  86. </listitem>
  87. <listitem>
  88. <para><code>category</code> - Jedna lub więcej kategorii do których należy kanał</para>
  89. </listitem>
  90. </itemizedlist>
  91. </para>
  92. <para>
  93. Elementy RSS <code>&lt;item&gt;</code> nie mają wymaganych składników,
  94. jednak albo składnik <code>title</code> albo <code>description</code> musi
  95. istnieć w elemencie.
  96. </para>
  97. <para>
  98. Składniki elementu kanału:
  99. </para>
  100. <para>
  101. <itemizedlist>
  102. <listitem>
  103. <para><code>title</code> - Tytuł elementu</para>
  104. </listitem>
  105. <listitem>
  106. <para><code>link</code> - Adres URL elementu</para>
  107. </listitem>
  108. <listitem>
  109. <para><code>description</code> - Opis elementu</para>
  110. </listitem>
  111. <listitem>
  112. <para><code>author</code> - Adres email autora elementu</para>
  113. </listitem>
  114. <listitem>
  115. <para><code>category</code> - Jedna lub więcej kategorii do których należy element</para>
  116. </listitem>
  117. <listitem>
  118. <para><code>comments</code> - Adres URL komentarzy do tego elementu</para>
  119. </listitem>
  120. <listitem>
  121. <para><code>pubDate</code> - Data publikacji elementu, w formacie RFC 822</para>
  122. </listitem>
  123. </itemizedlist>
  124. </para>
  125. <para>
  126. W twoim kodzie zawsze możesz sprawdzić czy element nie jest pusty za pomocą:
  127. </para>
  128. <programlisting role="php"><![CDATA[
  129. if ($item->propname()) {
  130. // ... kontynuuj.
  131. }
  132. ]]>
  133. </programlisting>
  134. <para>
  135. Jeśli zamiast tego użyjesz <code>$item->propname</code>, zawsze dostaniesz
  136. pusty obiekt który zostanie skonwertowany do wartości <code>TRUE</code>,
  137. więc test zawiedzie.
  138. </para>
  139. <para>
  140. Więcej informacji dostępnych jest w oficjalnej specyfikacji RSS 2.0:
  141. <ulink url="http://blogs.law.harvard.edu/tech/rss">http://blogs.law.harvard.edu/tech/rss</ulink>
  142. </para>
  143. </sect1>