[MANUAL] English:
[zend.git] / documentation / manual / ru / module_specs / Zend_Feed-ConsumingRss.xml
blob244371bbc36a012fbce47bf5f64624d2c1324d27
1 <sect1 id="zend.feed.consuming-rss">
2     <title>Работа с лентой RSS</title>
3     <para>
4         Чтение ленты такое же простое, как создание объекта <code>Zend_Feed_Rss</code>
5         с URI ленты:
6     </para>
8     <programlisting language="php"><![CDATA[
9 $channel = new Zend_Feed_Rss('http://rss.example.com/channelName');
10 ]]>
11     </programlisting>
13     <para>
14         Если при извлечении ленты произошла ошибка, то будет сгенерировано исключение
15         <code>Zend_Feed_Exception</code>.
16     </para>
18     <para>
19         Создав объект ленты, вы можете получить доступ к любым стандартным
20         свойствам канала RSS (channel) непосредственно в объекте:
21     </para>
23     <programlisting language="php"><![CDATA[
24 echo $channel->title();
25 ]]>
26     </programlisting>
28     <para>
29         Обратите внимание на синтаксис функции. <code>Zend_Feed</code> использует соглашение
30         об интерпретации свойств как объекта XML, если они запрошены в синтаксисе
31         получения переменной (<varname>$obj->property</varname> и как строки, если они запрошены
32         в синтаксисе метода (<varname>$obj->property()</varname>). Это позволяет получить доступ
33         к полному тексту любого отдельного узла, что одновременно дает полный доступ
34         и ко всем дочерним элементам.
35     </para>
37     <para>
38         Если свойства канала имеют атрибуты, то к ним можно получить доступ, используя
39         синтаксис массива PHP:
40     </para>
42     <programlisting language="php"><![CDATA[
43 echo $channel->category['domain'];
44 ]]>
45     </programlisting>
47     <para>
48         Поскольку атрибуты не могут иметь дочерние элементы, то нет
49         необходимости в синтаксисе метода для получения значений атрибутов.
50     </para>
52     <para>
53         Скорее всего, вам потребуется произвести обход ленты и выполнить
54         какие-либо операции с ее сообщениями. <code>Zend_Feed_Abstract</code>
55         реализует интерфейс PHP <code>Iterator</code>, поэтому вывод заголовков
56         всех статей в канале будет выглядеть следующим образом:
57     </para>
59     <programlisting language="php"><![CDATA[
60 foreach ($channel as $item) {
61     echo $item->title() . "\n";
63 ]]>
64     </programlisting>
66     <para>
67         На тот случай, если вы не знакомы с RSS, здесь приведены стандартные
68         элементы, которые должны присутствовать в канале (элемент
69         <code>&lt;channel&gt;</code>) и отдельных сообщениях RSS
70         (элемент <code>&lt;item&gt;</code>).
71     </para>
73     <para>
74         Обязательные элементы канала:
75     </para>
77     <para>
78         <itemizedlist>
79             <listitem>
80                 <para>
81                     <code>title</code> - имя канала
82                 </para>
83             </listitem>
84             <listitem>
85                 <para>
86                     <code>link</code> - URL веб-сайта, соответствующего каналу
87                 </para>
88             </listitem>
89             <listitem>
90                 <para>
91                     <code>description</code> - одно или несколько предложений, составляющих
92                     описание канала
93                 </para>
94             </listitem>
95         </itemizedlist>
96     </para>
98     <para>
99         Обычно используемые необязательные элементы канала:
100     </para>
102     <para>
103         <itemizedlist>
104             <listitem>
105                 <para>
106                     <code>pubDate</code> - дата публикации канала в формате RFC 822
107                 </para>
108             </listitem>
109             <listitem>
110                 <para>
111                     <code>language</code> - язык, на котором написано содержимое канала
112                 </para>
113             </listitem>
114             <listitem>
115                 <para>
116                     <code>category</code> - одна или несколько (задается несколькими тегами) категорий,
117                     к которым принадлежит канал
118                 </para>
119             </listitem>
120         </itemizedlist>
121     </para>
123     <para>
124         Элементы <code>&lt;item&gt;</code> не имеют обязательных вложенных элементов.
125         Тем не менее, должны быть представлены заголовок
126         <code>&lt;title&gt;</code> или описание
127         <code>&lt;description&gt;</code>.
128     </para>
130     <para>
131         Обычно используемые элементы сообщения:
132     </para>
134     <para>
135         <itemizedlist>
136             <listitem>
137                 <para>
138                     <code>title</code> - заголовок сообщения
139                 </para>
140             </listitem>
141             <listitem>
142                 <para>
143                     <code>link</code> - URL сообщения
144                 </para>
145             </listitem>
146             <listitem>
147                 <para>
148                     <code>description</code> - краткое описание
149                 </para>
150             </listitem>
151             <listitem>
152                 <para>
153                     <code>author</code> - e-mail автора
154                 </para>
155             </listitem>
156             <listitem>
157                 <para>
158                     <code>category</code> - одна или несколько категорий,
159                     к которым принадлежит сообщение
160                 </para>
161             </listitem>
162             <listitem>
163                 <para>
164                     <code>comments</code> - URL комментариев к данному сообщению
165                 </para>
166             </listitem>
167             <listitem>
168                 <para>
169                     <code>pubDate</code> - дата публикации в формате RFC 822
170                 </para>
171             </listitem>
172         </itemizedlist>
173     </para>
175     <para>
176         В своем коде вы можете проверить, имеет ли элемент непустое значение,
177         следующим образом:
178     </para>
180     <programlisting language="php"><![CDATA[
181 if ($item->propname()) {
182     // ... обработка
185     </programlisting>
187     <para>
188         Если вместо этого использовать <varname>$item->propname</varname>, то всегда будете
189         получать объект. Пустой объект расценивается как <constant>TRUE</constant>,
190         поэтому такая проверка будет некорректной.
191     </para>
193     <para>
194         Для получения более подробной информации читайте официальное описание
195         спецификации RSS 2.0:
196         <ulink url="http://blogs.law.harvard.edu/tech/rss">http://blogs.law.harvard.edu/tech/rss</ulink>
197     </para>
198 </sect1>
199 <!--
200 vim:se ts=4 sw=4 et: