Глава 10. Zend_Feed
Пред. |  | След.

## Глава 10. Zend_Feed

## 10.1. Введение

`Zend_Feed` предназначен для работы с лентами RSS и Atom. Он предоставляет естетственный синтаксис (natural syntax) для доступа к элементам лент, атрибутам лент и публикаций, полностью поддерживает изменение структуры лент и публикаций с использованием того же естетственного синтаксиса и преобразует результаты изменений обратно в XML. В будущем эта поддержка изменений может обеспечить добавление поддержки Atom Publishing Protocol.

Программно `Zend_Feed` состоит из базового класса `Zend_Feed`, абстрактных базовых классов `Zend_Feed_Abstract` и `Zend_Feed_EntryAbstract` для представления лент и публикаций, конкретных реализаций лент и публикаций для RSS и Atom, а также "закулисных" помощников для обеспечения работы естетственного синтаксиса.

В примере ниже мы демонстрируем простое получение ленты RSS и сохранение нужных данных из ленты в массив PHP, который может быть использован для распечатки, сохранения в БД и т.д.

| Внимание
Многие ленты RSS имеют различные доступные свойства каналов и их элементов. Спецификация RSS предоставляет множество необязательных свойств, поэтому имейте это в виду, когда пишете код для работы с данными RSS.

Пример 10.1. Включение Zend_Feed в работу с данными ленты RSS

    <?php
    require_once 'Zend/Feed.php';

    // Извлечение последних новостей Slashdot
    try {
        $slashdotRss = Zend_Feed::import('http://rss.slashdot.org/Slashdot/slashdot');
    } catch (Zend_Feed_Exception $e) {
        // неудача при импортировании ленты
        echo "Exception caught importing feed: {$e->getMessage()}\n";
        exit;
    }

    // Инициализация массива данных каналов
    $channel = array(
        'title'       => $slashdotRss->title(),
        'link'        => $slashdotRss->link(),
        'description' => $slashdotRss->description(),
        'items'       => array()
        );

    // Обход каналов и сохранение данных
    foreach ($slashdotRss as $item) {
        $channel['items'][] = array(
            'title'       => $item->title(),
            'link'        => $item->link(),
            'description' => $item->description()
            );
    }

    ?>

Пред. |  | След.
9.6. Zend_Db_Table_Rowset | Начало | 10.2. Импортирование лент с помощью Zend_Feed