Rozdział 10. Zend_Feed
Poprzedni |  | Następny

## Rozdział 10. Zend_Feed

## 10.1. Wprowadzenie

`Zend_Feed` zapewnia funkcjonalność umożliwiającą przetwarzanie kanałów informacyjnych RSS oraz Atom. Zapewnia ona naturalną składnię umożliwiającą dostęp do elementów kanałów informacyjnych, ich atrybutów oraz atrybutów samych wpisów. `Zend_Feed` daje także obszerne wsparcie w modyfikowaniu kanałów i struktury wpisów w ten sam naturalny sposób i umożliwia zapisanie rezultatów jako XML. W przyszłości klasa ma zapewnić obsługę protokołu publikowania Atom (Atom Publishing Protocol).

Programowo `Zend_Feed` składa się z bazowej klasy `Zend_Feed`, abstrakcyjnych klas `Zend_Feed_Abstract` oraz `Zend_Feed_EntryAbstract` reprezentujących kanały informacyjne i ich wpisy, specyficznych implementacji kanałów i wpisów dla RSS i Atom, oraz z pomocników odpowiedzialnych za naturalną składnię.

W przykładzie poniżej pokazujemy prosty przykład odbierania danych RSS i zapisywania potrzebnych części danych kanału do prostej tablicy PHP, która może być potem użyta do wyświetlenia danych, zapisania ich do bazy danych itp.

| Bądż ostrożny
Wiele kanałów RSS ma dostępne różne właściwości samego kanału i jego elementów. Specyfikacja RSS umożliwia użycie wielu opcjonalnych parametrów, więc bądź ostrożny gdy będziesz pisał kod pracujący z RSS.

Przykład 10.1. Użycie Zend_Feed do pobierania danych RSS

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

    // Ściągamy najnowsze nagłówki ze Slashdot
    try {
        $slashdotRss = Zend_Feed::import('http://rss.slashdot.org/Slashdot/slashdot');
    } catch (Zend_Feed_Exception $e) {
        // importowanie danych nie udało się
        echo "Exception caught importing feed: {$e->getMessage()}\n";
        exit;
    }

    // inicjalizacja tablicy z danymi kanału
    $channel = array(
        'title'       => $slashdotRss->title(),
        'link'        => $slashdotRss->link(),
        'description' => $slashdotRss->description(),
        'items'       => array()
        );

    // Pętla po każdym elemencie kanału i zapisanie potrzebnych danych
    foreach ($slashdotRss as $item) {
        $channel['items'][] = array(
            'title'       => $item->title(),
            'link'        => $item->link(),
            'description' => $item->description()
            );
    }

    ?>

Poprzedni |  | Następny
9.6. Zend_Db_Table_Rowset | Spis treści | 10.2. Importowanie kanałów informacyjnych za pomocą Zend_Feed