10.4. Odbieranie danych z kanału informacyjnego RSS
Poprzedni | Rozdział 10. Zend_Feed | Następny

## 10.4. Odbieranie danych z kanału informacyjnego RSS

Odczytywanie kanału RSS jest tak proste jak utworzenie obiektu `Zend_Feed_Rss` z adresem URL kanału przekazanym do konstruktora:

    <?php

    $channel = new Zend_Feed_Rss('http://rss.example.com/channelName');

    ?>

Jeśli wystąpi jakiś błąd podczas obróbki danych pochodzących z kanału, zostanie wyrzucony wyjątek `Zend_Feed_Exception`.

Kiedy już masz obiekt kanału informacyjnego, możesz łatwo uzyskać dostęp do standardowych właściwości kanału RSS bezpośrednio na obiekcie:

    <?php

    echo $channel->title();

    ?>

Zwróć uwagę na składnie funkcji. `Zend_Feed` używa konwencji traktującej właściwości jak obiekt XML gdy próbujemy uzyskać do nich dostęp za pomocą składni "getter" (`$obj->property`) i jako łańcuch znaków gdy próbujemy uzyskać dostęp jak do metody (`$obj->property()`). To pozwala na pełny dostęp do danych tekstowych przy jednoczesnym dostępie do wszystkich niższych składników.

Jeśli właściwości kanału mają atrybuty, są one dostępne przy użyciu składni tablic PHP:

    <?php

    echo $channel->category['domain'];

    ?>

Since XML attributes cannot have children, method syntax is not necessary for accessing attribute values.

Najczęściej będziesz chciał przejść pętlą po danych kanału i zrobić coś z jego wpisami. Klasa `Zend_Feed_Abstract` implementuje wbudowany w PHP interfejs `Iterator`, więc wyświetlenie wszystkich tytułów artykułów z kanału jest bardzo proste:

    <?php

    foreach ($channel as $item) {
        echo $item->title() . "\n";
    }

    ?>

Jeśli nie jesteś obeznany z RSS, poniżej znajdziesz opis podstawowych składników, które możesz znaleść w kanale RSS i w jego indywidualnych elementach (wpisach).

Wymagane składniki kanału:

- `title` - Nazwa kanału

- `link` - Adres URL strony internetowej odpowiadającej kanałowi

- `description` - Opis kanału

Opcjonalne składniki kanału:

- `pubDate` - Data publikacji zawartości, format RFC 822 format

- `language` - Język kanału

- `category` - Jedna lub więcej kategorii do których należy kanał

Elementy RSS `<item>` nie mają wymaganych składników, jednak albo składnik `title` albo `description` musi istnieć w elemencie.

Składniki elementu kanału:

- `title` - Tytuł elementu

- `link` - Adres URL elementu

- `description` - Opis elementu

- `author` - Adres email autora elementu

- `category` - Jedna lub więcej kategorii do których należy element

- `comments` - Adres URL komentarzy do tego elementu

- `pubDate` - Data publikacji elementu, w formacie RFC 822

W twoim kodzie zawsze możesz sprawdzić czy element nie jest pusty za pomocą:

    <?php

    if ($item->propname()) {
        // ... kontynuuj.
    }

    ?>

Jeśli zamiast tego użyjesz `$item->propname`, zawsze dostaniesz pusty obiekt który zostanie skonwertowany do wartości `TRUE`, więc test zawiedzie.

Więcej informacji dostępnych jest w oficjalnej specyfikacji RSS 2.0: http://blogs.law.harvard.edu/tech/rss

Poprzedni | Początek rozdziału | Następny
10.3. Odbieranie kanałów informacyjnych ze stron internetowych | Spis treści | 10.5. Odbieranie danych z kanału informacyjnego Atom