| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 |
- <sect1 id="zend.feed.consuming-rss">
- <title>Работа с лентой RSS</title>
- <para>
- Чтение ленты такое же простое, как создание объекта <code>Zend_Feed_Rss</code>
- с URI ленты:
- </para>
- <programlisting language="php"><![CDATA[
- $channel = new Zend_Feed_Rss('http://rss.example.com/channelName');
- ]]>
- </programlisting>
- <para>
- Если при извлечении ленты произошла ошибка, то будет сгенерировано исключение
- <code>Zend_Feed_Exception</code>.
- </para>
- <para>
- Создав объект ленты, вы можете получить доступ к любым стандартным
- свойствам канала RSS (channel) непосредственно в объекте:
- </para>
- <programlisting language="php"><![CDATA[
- echo $channel->title();
- ]]>
- </programlisting>
- <para>
- Обратите внимание на синтаксис функции. <code>Zend_Feed</code> использует соглашение
- об интерпретации свойств как объекта XML, если они запрошены в синтаксисе
- получения переменной (<varname>$obj->property</varname> и как строки, если они запрошены
- в синтаксисе метода (<varname>$obj->property()</varname>). Это позволяет получить доступ
- к полному тексту любого отдельного узла, что одновременно дает полный доступ
- и ко всем дочерним элементам.
- </para>
- <para>
- Если свойства канала имеют атрибуты, то к ним можно получить доступ, используя
- синтаксис массива PHP:
- </para>
- <programlisting language="php"><![CDATA[
- echo $channel->category['domain'];
- ]]>
- </programlisting>
- <para>
- Поскольку атрибуты не могут иметь дочерние элементы, то нет
- необходимости в синтаксисе метода для получения значений атрибутов.
- </para>
- <para>
- Скорее всего, вам потребуется произвести обход ленты и выполнить
- какие-либо операции с ее сообщениями. <code>Zend_Feed_Abstract</code>
- реализует интерфейс PHP <code>Iterator</code>, поэтому вывод заголовков
- всех статей в канале будет выглядеть следующим образом:
- </para>
- <programlisting language="php"><![CDATA[
- foreach ($channel as $item) {
- echo $item->title() . "\n";
- }
- ]]>
- </programlisting>
- <para>
- На тот случай, если вы не знакомы с RSS, здесь приведены стандартные
- элементы, которые должны присутствовать в канале (элемент
- <code><channel></code>) и отдельных сообщениях RSS
- (элемент <code><item></code>).
- </para>
- <para>
- Обязательные элементы канала:
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- <code>title</code> - имя канала
- </para>
- </listitem>
- <listitem>
- <para>
- <code>link</code> - URL веб-сайта, соответствующего каналу
- </para>
- </listitem>
- <listitem>
- <para>
- <code>description</code> - одно или несколько предложений, составляющих
- описание канала
- </para>
- </listitem>
- </itemizedlist>
- </para>
- <para>
- Обычно используемые необязательные элементы канала:
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- <code>pubDate</code> - дата публикации канала в формате RFC 822
- </para>
- </listitem>
- <listitem>
- <para>
- <code>language</code> - язык, на котором написано содержимое канала
- </para>
- </listitem>
- <listitem>
- <para>
- <code>category</code> - одна или несколько (задается несколькими тегами) категорий,
- к которым принадлежит канал
- </para>
- </listitem>
- </itemizedlist>
- </para>
- <para>
- Элементы <code><item></code> не имеют обязательных вложенных элементов.
- Тем не менее, должны быть представлены заголовок
- <code><title></code> или описание
- <code><description></code>.
- </para>
- <para>
- Обычно используемые элементы сообщения:
- </para>
- <para>
- <itemizedlist>
- <listitem>
- <para>
- <code>title</code> - заголовок сообщения
- </para>
- </listitem>
- <listitem>
- <para>
- <code>link</code> - URL сообщения
- </para>
- </listitem>
- <listitem>
- <para>
- <code>description</code> - краткое описание
- </para>
- </listitem>
- <listitem>
- <para>
- <code>author</code> - e-mail автора
- </para>
- </listitem>
- <listitem>
- <para>
- <code>category</code> - одна или несколько категорий,
- к которым принадлежит сообщение
- </para>
- </listitem>
- <listitem>
- <para>
- <code>comments</code> - URL комментариев к данному сообщению
- </para>
- </listitem>
- <listitem>
- <para>
- <code>pubDate</code> - дата публикации в формате RFC 822
- </para>
- </listitem>
- </itemizedlist>
- </para>
- <para>
- В своем коде вы можете проверить, имеет ли элемент непустое значение,
- следующим образом:
- </para>
- <programlisting language="php"><![CDATA[
- if ($item->propname()) {
- // ... обработка
- }
- ]]>
- </programlisting>
- <para>
- Если вместо этого использовать <varname>$item->propname</varname>, то всегда будете
- получать объект. Пустой объект расценивается как <constant>TRUE</constant>,
- поэтому такая проверка будет некорректной.
- </para>
- <para>
- Для получения более подробной информации читайте официальное описание
- спецификации RSS 2.0:
- <ulink url="http://blogs.law.harvard.edu/tech/rss">http://blogs.law.harvard.edu/tech/rss</ulink>
- </para>
- </sect1>
- <!--
- vim:se ts=4 sw=4 et:
- -->
|