Zend_Service_Technorati promosso in Core

February 3rd, 2008

Il commit r7757 ha ufficialmente decretato la promozione nella core library di un componente al quale sono molto affezionato: Zend_Service_Technorati.
Non solo si tratta della prima libreria completamente proposta e sviluppata dal sottoscritto, ma è anche un lavoro che mi ha visto occupato per diversi giorni nel tentativo di risolvere i vari problemi di inconsistenza delle API di Technorati, come dimostra il ticket #ZF-2334.

Panoramica di Zend_Service_Technorati

In attesa che la documentazione ufficiale, già presente nel repository, venga resa disponibile nella prossima anteprima di Zend Framework 1.5, vorrei spendere due parole per presentare il componente.

Come chiaramente documentato nella proposta iniziale, Zend_Service_Technorati è un componente che permette di interagire con le API messe a disposizione da Technorati.
Attraverso le API è possibile eseguire molte delle interrogazioni disponibili con la classica interfaccia, ad esempio:

  • ricerca dei blog per parola chiave
  • ricerca dei blog per tag
  • ricerca dei blog per autore

e molto altro ancora.

Le applicazioni sono numerose. Oltre alla possibilità di creare dei veri e propri tool, è possibile ad esempio mostrare nel vostro blog un elenco di tutti i blog che linkano il vostro o, ancora, un tag cloud per il vostro blog se la piattaforma che utilizzate non lo consente.

Esempi di utilizzo di Zend_Service_Technorati

Vediamo in breve alcuni esempi di utilizzo di Zend_Service_Technorati.
I seguenti esempi presuppongono che disponiate di un’opportuna API Key, messa a disposizione da Technorati per ogni utente registrato.

Il metodo search permette di eseguire una ricerca dei post che rispondono alla parola chiave fornita.
Tra le varie opzioni è possibile scegliere di mostrare o meno dati sull’autore del blog, cercare solo tra i blog invece dei post, limitare la ricerca a N risultati e molto altro.

<?php

require_once 'Zend/Service/Technorati.php';

// create a new Zend_Service_Technorati
// with a valid API_KEY
$technorati = new Zend_Service_Technorati('VALID_API_KEY');

// search Technorati for PHP keyword
// $resultSet is an instance of Zend_Service_Technorati_SearchResultSet
$resultSet = $technorati->search('PHP');

Ma non è tutto. Ogni metodo che esegue una ricerca, come search, cosmos, tag, … restituisce un oggetto ResultSet.
La particolarità di questo oggetto è che implementa l’interfaccia SeekableIterator e permette dunque di scorrere i risultati come un classico array, mediante il costrutto foreach.

<?php

require_once 'Zend/Service/Technorati.php';

// create a new Zend_Service_Technorati
// with a valid API_KEY
$technorati = new Zend_Service_Technorati('VALID_API_KEY');

// search Technorati for PHP keyword
// $resultSet is an instance of Zend_Service_Technorati_SearchResultSet
$resultSet = $technorati->search('PHP');

// loop over all result objects
foreach ($resultSet as $result) {
// $result is an instance of Zend_Service_Technorati_SearchResult
}

Ma non è tutto. Poiché si tratta di SeekableIterator e non Iterator, è possibile caricare un singolo elemento scelto dalla collezione.

<?php

require_once 'Zend/Service/Technorati.php';

// create a new Zend_Service_Technorati
// with a valid API_KEY
$technorati = new Zend_Service_Technorati('VALID_API_KEY');

// search Technorati for PHP keyword
// $resultSet is an instance of Zend_Service_Technorati_SearchResultSet
$resultSet = $technorati->search('PHP');

// $result is an instance of Zend_Service_Technorati_SearchResult
$resultSet-&gt;seek(1);
$result = $resultSet-&gt;current();

Documentazione di Zend_Service_Technorati

Credetemi quando vi dico che Zend_Service_Technorati è una libreria estremamente ricca di funzionalità.
Mi ci sono volute oltre 700 righe di documentazione per fornire un’idea generale sul suo funzionamento e mi è dunque impossibile mostrare in poche frasi le sue funzionalità complete

Vi rimando dunque alla documentazione ufficiale in inglese per qualsiasi approfondimento. :)

Trackback URI | Comments RSS

Leave a Reply