FeedCreator: classe PHP per scrivere feed RSS e Atom

FeedCreator è una classe PHP per scrivere feed in diversi formati, tra i quali anche RSS e Atom.
Il progetto originale risale al 2003, ad opera di Kai Blankenhorn. Nel 2005 lo sviluppo è stato ripreso, portato su SourceForge ma inspiegabilmente nuovamente a rilento.

Nonostante qualche difettuccio qui e là, FeedCreator ad oggi è una delle migliori classi PHP per scrivere feed RSS, Atom, PIE ed OPML.

FeedCreator offre due enormi vantaggi a colui che deve scrivere un feed in PHP:

  1. Non sono necessarie particolari conoscenze delle specifiche dei singoli formati, ad eccezione di una competenza generale su quali sono gli elementi presenti in un feed. Ad oggi, la documentazione della classe è assai limitata.
  2. E' possibile variare il formato di output semplicemente cambiando il valore di una variabile nella classe, mantenendo invariato tutto il resto del codice.
    Questo consente di modificare il formato del feed in un istante, nonché di creare lo stesso feed in può formati contemporaneamente.

Tra le funzionalità di rilievo di FeedCreator spiccano

  1. La possibilità di salvare fisicamente il file creato in un percorso stabilito oppure la visualizzazione del contenuto a schermo.
  2. Un sistema di cache interno utile a salvaguardare le risorse nel caso il feed sia richiesto nel periodo di tempo stabilito.
  3. Un approcio abbastanza object oriented, considerando anche il periodo del suo rilascio iniziale, che sarà utile a quanti utilizzano largamente questo metodo di programmazione.

Esempi d'utilizzo

L'esempio seguente, tratto dal sito di FeedCreator, mostra un esempio base di utilizzo della classe.

<? 
include("feedcreator.class.php");

// crea un nuovo oggetto ed istanzia le caratteristiche del feed
$rss = new UniversalFeedCreator();
$rss->useCached();
$rss->title = "PHP news";
$rss->description = "daily news from the PHP scripting world";
$rss->link = "http://www.dailyphp.net/news";
$rss->syndicationURL = "http://www.dailyphp.net/".$PHP_SELF;

// associa al feed una immagine
$image = new FeedImage();
$image->title = "dailyphp.net logo";
$image->url = "http://www.dailyphp.net/images/logo.gif";
$image->link = "http://www.dailyphp.net";
$image->description = "Feed provided by dailyphp.net. Click to visit.";
$rss->image = $image;

// legge il contenuto di un database
mysql_select_db($dbHost, $dbUser, $dbPass);
$res = mysql_query("SELECT * FROM tabella_news ORDER BY news_data DESC");

// scorre tutto il contenuto della query al database
while ($data = mysql_fetch_object($res)) {
    $item = new FeedItem();
    $item->title = $data->news_titolo;
    $item->link = $data->news_url;
    $item->description = $data->news_riassunto;
    $item->date = $data->news_data;
    $item->source = "http://www.dailyphp.net";
    $item->author = $data->news_autore;
    
    // aggiunge la news alla lista di elementi del feed
    $rss->addItem($item);
}

$rss->saveFeed("RSS2.0", "feed.xml");
?>

Si raccomanda la lettura della documentazione interna alla classe per individuare le altre funzionalità offerte.