RSS i SimplePie

SimplePie RSS parser

Google Reader nie jest dostępne już prawie dwa miesiące, a na rynku pojawiło się sporo rozwiązań, które skutecznie wypełniły lub nadal wypełniają lukę pozostawioną przez ten największy jak do tej pory serwis. Niektóre rozwiązania starają się bardzo przypominać rozwiązanie od wujka Google, inne z kolei zmieniają nieco nasze przyzwyczajenia i udostępniają nam nowatorskie interfejsy. Nie chcę jednak pisać o obecnych rozwiązaniach, a o możliwości stworzenia własnego.

SimplePie

Narzędzie, które pozwoli nam konsumować kanały RSS oraz w łatwy sposób wyświetlać treści się tam znajdujące nazywa się SimplePie. Budowane i rozwijane w duchu Open Source na Github, zainstalowane może być za pomocą wspominanego już wielokrotnie tutaj Composera (SimplePie Packagist).

Podstawy

Zakładając, że mamy już zainstalowane SimplePie poprzez Composer, możemy przystąpić do wyboru pierwszego kanału RSS, który będziemy chcieli sparsować i wyświetlić. Posłużę się oczywiście swoim kanałem blogowym i pokażę Wam przykład, gdzie stworzę nowy obiekt SimplePie, ustawię adres URL kanału RSS (set_feed_url()) oraz zainicjalizuję nasz RSS reader poprzez wywołanie metody init() na obiekcie $feed.

<?php

require_once 'vendor/autoload.php';

$url = 'http://mrzepinski.pl/feed';
$feed = new SimplePie();
$feed->set_feed_url($url);
$feed->init();

UWAGA: SimplePie może rzucić wyjątkiem Warning: ./cache is not writeable. Wystarczy w takim wypadku utworzyć folder cache i w przypadku środowiska [L]inux nadać mu odpowiednie uprawnienia (chmod 755 cache).

Tym samym – jeżeli URL, który podaliśmy jest dostępny i jest to kanał RSS / Atom – możemy wykonywać kolejne metody, które pozwolą pobrać dane z kanału RSS.

...
echo '<h1>'.$feed->get_title().'</h1>';
echo '<p>'.$feed->get_description().'</p>';

Dzięki metodom get_title() oraz get_description() pobierzemy odpowiednio tytuł oraz opis naszego kanału RSS.

Jako, że kanały RSS posiadają standard, który zapewnia, że format XML kanału musi być zawsze taki sam, możemy bez problemu pobierać także konkretne informacje o poszczególnych obiektach, które udostępniane są przez RSS. Pobranie pierwszego obiektu wyglądać może następująco:

...
$item = $feed->get_item(0);
echo '<p>Title: <a href="'.$item->get_link().'">'.$item->get_title().'</a></p>';
echo '<p>Author: '.$item->get_author()->get_name().'</p>';
echo '<p>Date: '.$item->get_date('Y-m-d H:i:s').'</p>';
echo $item->get_content(true);

Ważnym czynnikiem jest także ilość dostępnych elementów. Taką informację osiągniemy poprzez wywołanie metody get_item_quantity() w następujący sposób:

...
$itemQty = $feed->get_item_quantity();
for ($i = 0; $i < $itemQty; $i++) {
    ...
}

Rozwiązanie to nie pozwoli nam jednak na paginację pobieranych wyników. Dużo łatwiej będzie nam to osiągnąć poprzez wykorzystanie metody get_items(), która jako pierwszy argument przyjmuje tak zwany offset, (miejsce od którego chcemy zacząć pobierać kolejne elementy), a jako drugi liczbę elementów do pobrania.

...
foreach ($feed->get_items(10, 10) as $item) {
    ...
}

Podsumowanie

Tym samym zbudowaliśmy prosty czytnik RSS. Nie było to specjalnie trudne prawda? Pełną dokumentację dostępnych klas oraz metod znajdziecie w oficjalnym API opisującym wszystkie dostępne funkcje. Do Was należy pobudzenie swojej kreatywności oraz realizacja własnego projektu.

Osom PHP #1 – Composer

Composer

Był już wprawdzie wpis o 24 bibliotekach PHP, które warto poznać, ale.. jest tego znacznie więcej i naprawdę warto być na czasie. Tym samym postaram się dzielić z Wami co jakiś czas wpisami na temat nowości, które sprawiają, że społeczność PHP oraz wszystkie powstające biblioteki, narzędzia, ułatwienia i.. długo by tak wymieniać – przyspieszają naszą pracę, sprawiają, że jesteśmy lepsi oraz bardziej efektywni. Zapraszam do pierwszej części poświęconej narzędziom powiązanym z Composerem.

Dlaczego Composer? Gdyby opisywać historyjkę w Scrum, to według mnie, nie jest to już nice to have, a must have.

Composer Installers

Multi framework, który integruje się z Composerem i pozwala na bardziej rozbudowane zarządzanie wszystkimi instalowanymi paczkami. Dzięki tej bibliotece jesteśmy w stanie na przykład zmieniać nazwy pakietów podczas instalacji, czy też modyfikować ścieżki, gdzie zainstalowane zostaną poszczególne komponenty.

Packagist

Composer w zasadzie nie istniałby dzisiaj, gdyby nie rozbudowane repozytorium wszystkich dostępnych bibliotek. Takie repozytorium stanowi właśnie Packagist. Z jego pomocą odnajdziemy interesujące nad komponenty oraz dowiemy się nieco więcej na temat ich różnych wersji.

Satis

Pozwala na statyczną obsługę repozytorium na podstawie naszego pliku composer.json. Jest to jakby lekka wersja Packagist, która odpowiedzialna może być na przykład za składowanie prywatnych komponentów na potrzeby nasze lub firmy.

Composition

Czyli sprawdzanie naszego środowiska w oparciu o Composer. Dzięki Composition jesteśmy w stanie sprawdzić system na którym pracujemy, wersje zainstalowanych bibliotek, czy ich faktyczną obecność w naszym kodzie. Bardzo przydatne narzędzie.

Poser

Pozwala na tak zwany aliasing. To nic innego jak zmiana nazwy klas, przestrzeni nazw instalowanych bibliotek. Możemy dzięki temu wykorzystywać własne nazwy, które będą nam bardziej odpowiadać.

Version

To wparcie dla wersjonowania naszego kodu. Pozwala zarządzać odpowiednią numeracją wersji według schematu Semantycznego Wersjonowania.

NameSpacer

Z pewnością doskonale znacie i kojarzycie standard z języka PHP, gdzie wykorzystywane są podkreślenia lub prefixy w celu budowy nazw klas, opisu struktury katalogów oraz autoloadera, który nam te klasy ładuje na żądanie. NameSpacer to narzędzie, które pozwoli nam zastąpić ten relikt przeszłości na przestrzenie nazw. Od tak.

Patch Installer

Jak sama nazwa mówi – jest to mechanizm do instalowania tak zwanych patchy z wykorzystaniem Composera.