# Zend_Service_Technorati

## Einführung

`Zend_Service_Technorati` bietet ein einfaches, intuitives und objekt-orientiertes Interface für die Verwendung der Technorati API. Es bietet Zugriff zu allen vorhandenen Technorati API Abfragen und gibt die originalen XML Antworten als freundliches PHP Objekt zurück.

Technorati ist eine der populärsten Blog Suchmaschinen. Das API Interface ermöglicht es Entwicklern Informationen über einen spezifischen Blog zu erhalten, Blogs zu suchen die einem einzelnen Tag oder einer Phrase entsprechen und Informationen über einen spezifischen Author (Blogger) erhalten. Für eine komplette Liste von vorhandenen Abfragen kann in die Technorati API Dokumentation oder die vorhandenen Technorati Abfragen Sektion dieses Dokuments gesehen werden.

## Anfangen

Technorati benötigt einen gültigen API Schlüssel zur Verwendung. Um einen eigenen API Schlüssel zu erhalten muss ein neuer Technorati Account erstellt werden, und anschließend die API Schlüssel Sektion besucht werden.

### API Schlüssel Beschränkungen

Es können bis zu 500 Technirati API Aufrufe pro Tag durchgeführt werden ohne das Kosten anfallen. Andere Limitationen der Verwendung können vorhanden sein, abhängig von der aktuellen Technorati API Lizenz.

Sobald man einen gültigen API Schlüssel hat, kann man beginnen `Zend_Service_Technorati` zu verwenden.

## Die erste Abfrage durchführen

Um eine Abfrage durchzuführen, benötigt man zuerst eine `Zend_Service_Technorati` Instanz mit einem gültigen API Schlüssel. Dann kann eine der vorhandenen Abfragemethoden ausgewählt werden, und durch Angabe der benötigen Argumente aufgerufen werden.

### Die erste Abfragen senden

    // ein neues Zend_Service_Technorati mit einem gültigen API_KEY erstellen
    $technorati = new Zend_Service_Technorati('VALID_API_KEY');

    // Technorati nach dem Schlüsselwort PHP durchsuchen
    $resultSet = $technorati->search('PHP');

Jede Abfragemethode akzeptiert ein Array von optionalen Parametern die verwendet werden kann um die Abfrage zu verfeinern.

### Verfeinern der Abfrage

    // ein neues Zend_Service_Technorati mit einem gültigen API_KEY erstellen
    $technorati = new Zend_Service_Technorati('VALID_API_KEY');

    // Die Abfrage nach Ergebnissen mit etwas Authority filtern
    // (Ergebnisse von Blogs mit einer Handvoll Links)
    $options = array('authority' => 'a4');

    // Technorati nach dem Schlüsselwort PHP durchsuchen
    $resultSet = $technorati->search('PHP', $options);

Eine `Zend_Service_Technorati` Instanz ist kein einmal zu verwendendes Objekt. Deswegen muß keine neue Instanz für jede Abfrage erstellt werden; es kann einfach das aktuelle `Zend_Service_Technorati` Objekt solange verwendet werden wie es benötigt wird.

### Mehrfache Abfragen mit der gleichen Zend_Service_Technorati Instanz senden

    // ein neues Zend_Service_Technorati mit einem gültigen API_KEY erstellen
    $technorati = new Zend_Service_Technorati('VALID_API_KEY');

    // Technorati nach dem Schlüsselwort PHP durchsuchen
    $search = $technorati->search('PHP');

    // Top Tags die von Technorati indiziert wurden erhalten
    $topTags = $technorati->topTags();

## Ergebnisse verarbeiten

Es kann einer von zwei Typen von Ergebnisobjekten als Antwort auf eine Abfrage empfangen werden.

Die erste Gruppe wird durch `Zend_Service_Technorati_*ResultSet` Objekte repräsentiert. Ein Ergebnisset Objekt ist grundsätzlich eine Kollektion von Ergebnisobjekten. Es erweitert die grundsätzliche `Zend_Service_Technorati_ResultSet` Klasse und implementiert das PHP Interface `SeekableIterator`. Der beste Weg um ein Ergebnisset Objekt zu verarbeiten ist dieses mit einem PHP `foreach` Statement zu durchlaufen.

### Ein Ergebnisset Objekt verarbeiten

    // ein neues Zend_Service_Technorati mit einem gültigen API_KEY erstellen
    $technorati = new Zend_Service_Technorati('VALID_API_KEY');

    // Technorati nach dem PHP Schlüsselwort durchsuchen
    // $resultSet ist eine Instanz von Zend_Service_Technorati_SearchResultSet
    $resultSet = $technorati->search('PHP');

    // Alle Ergebnisobjekte durchlaufen
    foreach ($resultSet as $result) {
        // $result ist eine Instanz von Zend_Service_Technorati_SearchResult
    }

Weil `Zend_Service_Technorati_ResultSet` das `SeekableIterator` Interface implementiert, kann ein spezifisches Ergebnisobjekt gesucht werden indem dessen Position in der Ergebnissammlung verwendet wird.

### Ein spezifisches Ergebnisset Objekt suchen

    // ein neues Zend_Service_Technorati mit einem gültigen API_KEY erstellen
    $technorati = new Zend_Service_Technorati('VALID_API_KEY');

    // Technorati nach dem PHP Schlüsselwort durchsuchen
    // $resultSet ist eine Instanz von Zend_Service_Technorati_SearchResultSet
    $resultSet = $technorati->search('PHP');

    // $result ist eine Instanz von Zend_Service_Technorati_SearchResult
    $resultSet->seek(1);
    $result = $resultSet->current();

`SeekableIterator` arbeitet als Array und zählt Positionen beginnend vom Index 0. Das Holen der Position 1 bedeutet das man das zweite Ergebnis der Kollektion erhält.

Die zweite Gruppe wird durch spezielle alleinstehende Ergebnisobjekte repräsentiert. `Zend_Service_Technorati_GetInfoResult`, `Zend_Service_Technorati_BlogInfoResult` und `Zend_Service_Technorati_KeyInfoResult` funktionieren als Wrapper für zusätzliche Objekte, wie `Zend_Service_Technorati_Author` und `Zend_Service_Technorati_Weblog`.

### Ein alleinstehendes Ergebnisobjekt verarbeiten

    // ein neues Zend_Service_Technorati mit einem gültigen API_KEY erstellen
    $technorati = new Zend_Service_Technorati('VALID_API_KEY');

    // Infos über weppos Author erhalten
    $result = $technorati->getInfo('weppos');

    $author = $result->getAuthor();
    echo '<h2>Blogs authorisiert von ' . $author->getFirstName() . " " .
              $author->getLastName() . '</h2>';
    echo '<ol>';
    foreach ($result->getWeblogs() as $weblog) {
        echo '<li>' . $weblog->getName() . '</li>';
    }
    echo "</ol>";

Bitte lesen Sie das Zend_Service_Technorati Klassen Kapitel für weitere Details über Antwortklassen.

## Fehler behandeln

Jede `Zend_Service_Technorati` Abfragemethode wirft bei einem Fehler eine `Zend_Service_Technorati_Exception` Ausnahme mit einer bedeutungsvollen Fehlermeldung.

Es gibt verschiedene Gründe die Verursachen können das eine `Zend_Service_Technorati` Abfrage fehlschlägt. `Zend_Service_Technorati` prüft alle Parameter für jegliche Abfrageanfragen. Wenn ein Parameter ungültig ist oder er einen ungültigen Wert enthält, wird eine neue `Zend_Service_Technorati_Exception` Ausnahme geworfen. Zusätzlich kann das Technorati API Interface temporär unerreichbar sein, oder es kann eine Antwort zurückgeben die nicht gültig ist.

Eine Technorati Abfrage sollte immer mit einem `try`...`catch` Block umhüllt werden.

### Eine Abfrageausnahme behandeln

    $technorati = new Zend_Service_Technorati('VALID_API_KEY');
    try {
        $resultSet = $technorati->search('PHP');
    } catch(Zend_Service_Technorati_Exception $e) {
        echo "Ein Fehler ist aufgetreten: " $e->getMessage();
    }

## Prüfen der täglichen Verwendung des eigenen API Schlüssels

Von Zeit zu Zeit wird man die tägliche Verwendung des API Schlüssels prüfen wollen. Standardmäßig limitiert Technorati die API Verwendung auf 500 Aufrufe pro Tag, und eine Ausnahme wird durch `Zend_Service_Technorati` zurückgegeben wenn versucht wird dieses Limit zu überschreiten. Man kann diese Information über die Verwendung des eigenen API Schlüssels erhalten indem die `Zend_Service_Technorati::keyInfo()` Methode verwendet wird.

`Zend_Service_Technorati::keyInfo()` gibt ein `Zend_Service_Technorati_KeyInfoResult` Object zurück. Für vollständige Details kann im API Referenz Guide nachgesehen werden.

### Die Information über die tägliche Verwendung des API Schlüssels erhalten

    $technorati = new Zend_Service_Technorati('VALID_API_KEY');
    $key = $technorati->keyInfo();

    echo "API Schlüssel: " . $key->getApiKey() . "<br />";
    echo "Tägliche Verwendung: " . $key->getApiQueries() . "/" .
         $key->getMaxQueries() . "<br />";

## Vorhandene Technorati Abfragen

`Zend_Service_Technorati` bietet Unterstützung für die folgenden Abfragen:

- `Cosmos`

- `Search`

- `Tag`

- `DailyCounts`

- `TopTags`

- `BlogInfo`

- `BlogPostTags`

- `GetInfo`

### Technorati Cosmos

Eine Cosmos Abfrage lässt einen Sehen welche Blog zu einer gegebenen URL verknüpft sind. Sie gibt ein `Zend_Service_Technorati_CosmosResultSet` Objekt zurück. Für vollständige Details kann nach `Zend_Service_Technorati::cosmos()` im API Referenz Guide nachgesehen werden.

#### Cosmos Abfrage

    $technorati = new Zend_Service_Technorati('VALID_API_KEY');
    $resultSet = $technorati->cosmos('http://devzone.zend.com/');

    echo "<p>Liest " . $resultSet->totalResults() .
         " von " . $resultSet->totalResultsAvailable() .
         " vorhandenen Ergebnissen</p>";
    echo "<ol>";
    foreach ($resultSet as $result) {
        echo "<li>" . $result->getWeblog()->getName() . "</li>";
    }
    echo "</ol>";

### Technorati Search

Die Search Abfrage lässt einen Sehen welche Blogs einen gegebenen Suchstring enthalten. Sie gibt ein `Zend_Service_Technorati_SearchResultSet` Objekt zurück. Für vollständige Details kann nach `Zend_Service_Technorati::search()` im API Referenz Guide nachgesehen werden.

#### Suchabfrage

    $technorati = new Zend_Service_Technorati('VALID_API_KEY');
    $resultSet = $technorati->search('zend framework');

    echo "<p>Liest " . $resultSet->totalResults() .
         " von " . $resultSet->totalResultsAvailable() .
         " vorhandenen Ergebnissen</p>";
    echo "<ol>";
    foreach ($resultSet as $result) {
        echo "<li>" . $result->getWeblog()->getName() . "</li>";
    }
    echo "</ol>";

### Technorati Tag

Die Tag Abfrage lässt einen Sehen welche Antworten mit einem gegebenen Tag assoziiert sind. Sie gibt ein `Zend_Service_Technorati_TagResultSet` Objekt zurück. Für vollständige Details kann nach `Zend_Service_Technorati::tag()` im API Referenz Guide nachgesehen werden.

#### Tag Abfrage

    $technorati = new Zend_Service_Technorati('VALID_API_KEY');
    $resultSet = $technorati->tag('php');

    echo "<p>Liest " . $resultSet->totalResults() .
         " von " . $resultSet->totalResultsAvailable() .
         " vorhandenen Ergebnissen</p>";
    echo "<ol>";
    foreach ($resultSet as $result) {
        echo "<li>" . $result->getWeblog()->getName() . "</li>";
    }
    echo "</ol>";

### Technorati DailyCounts

Die DailyCounts Abfrage bietet tägliche Anzahlen von Antworten die ein abgefragtes Schlüsselwort enthalten. Sie gibt ein `Zend_Service_Technorati_DailyCountsResultSet` Objekt zurück. Für vollständige Details kann nach `Zend_Service_Technorati::dailyCounts()` im API Referenz Guide nachgesehen werden.

#### DailyCounts Abfrage

    $technorati = new Zend_Service_Technorati('VALID_API_KEY');
    $resultSet = $technorati->dailyCounts('php');

    foreach ($resultSet as $result) {
        echo "<li>" . $result->getDate() .
             "(" . $result->getCount() . ")</li>";
    }
    echo "</ol>";

### Technorati TopTags

Die TopTags Abfrage bietet Informationen über Top Tags die durch Technorati indiziert sind. Sie gibt ein `Zend_Service_Technorati_TagsResultSet` Objekt zurück. Für vollständige Details kann nach `Zend_Service_Technorati::topTags()` im API Referenz Guide nachgesehen werden.

#### TopTags Abfrage

    $technorati = new Zend_Service_Technorati('VALID_API_KEY');
    $resultSet = $technorati->topTags();

    echo "<p>Liest " . $resultSet->totalResults() .
         " von " . $resultSet->totalResultsAvailable() .
         "  vorhandenen Ergebnissen</p>";
    echo "<ol>";
    foreach ($resultSet as $result) {
        echo "<li>" . $result->getTag() . "</li>";
    }
    echo "</ol>";

### Technorati BlogInfo

Eine BlogInfo Abfrage bietet Informationen darüber welcher Blog, wenn überhaupt, mit einer gegebenen URL assoziiert ist. Sie gibt ein `Zend_Service_Technorati_BlogInfoResult` Objekt zurück. Für vollständige Details kann nach `Zend_Service_Technorati::blogInfo()` im API Referenz Guide nachgesehen werden.

#### BlogInfo Abfrage

    $technorati = new Zend_Service_Technorati('VALID_API_KEY');
    $result = $technorati->blogInfo('http://devzone.zend.com/');

    echo '<h2><a href="' . (string) $result->getWeblog()->getUrl() . '">' .
         $result->getWeblog()->getName() . '</a></h2>';

### Technorati BlogPostTags

Eine BlogPostTags Abfrage bietet Informationen über Top Tags die von einem spezifischen Blog verwendet werden. Sie gibt ein `Zend_Service_Technorati_TagsResultSet` Objekt zurück. Für vollständige Details kann nach `Zend_Service_Technorati::blogPostTags()` im API Referenz Guide nachgesehen werden.

#### BlogPostTags Abfrage

    $technorati = new Zend_Service_Technorati('VALID_API_KEY');
    $resultSet = $technorati->blogPostTags('http://devzone.zend.com/');

    echo "<p>Liest " . $resultSet->totalResults() .
         " von " . $resultSet->totalResultsAvailable() .
         " vorhandenen Ergebnissen</p>";
    echo "<ol>";
    foreach ($resultSet as $result) {
        echo "<li>" . $result->getTag() . "</li>";
    }
    echo "</ol>";

### Technorati GetInfo

Eine GetInfo Abfrage teilt mit was Technorati über ein Mitglied weiß. Sie gibt ein `Zend_Service_Technorati_GetInfoResult` Objekt zurück. Für vollständige Details kann nach `Zend_Service_Technorati::getInfo()` im API Referenz Guide nachgesehen werden.

#### GetInfo Abfrage

    $technorati = new Zend_Service_Technorati('VALID_API_KEY');
    $result = $technorati->getInfo('weppos');

    $author = $result->getAuthor();
    echo "<h2>Blogs authorisiert von " . $author->getFirstName() . " " .
         $author->getLastName() . "</h2>";
    echo "<ol>";
    foreach ($result->getWeblogs() as $weblog) {
        echo "<li>" . $weblog->getName() . "</li>";
    }
    echo "</ol>";

### Technorati KeyInfo

Die KeyInfo Abfrage bietet Informationen über die tägliche Verwendung eines API Schlüssels. Sie gibt ein `Zend_Service_Technorati_KeyInfoResult` Objekt zurück. Für vollständige Details kann nach `Zend_Service_Technorati::keyInfo()` im API Referenz Guide nachgesehen werden.

## Zend_Service_Technorati Klassen

Die folgenden Klassen werden von den verschiedenen Technorati Anfragen zurückgegeben. Jede `Zend_Service_Technorati_*ResultSet` Klasse enthält ein typ-spezifisches Ergebnisset welches einfach, mit jedem Ergebnis das in einem Typ Ergebnisobjekt enthalten ist, iteriert werden kann. Alle Ergebnisset Klassen erweitern die `Zend_Service_Technorati_ResultSet` Klasse und implementieren das `SeekableIterator` Interface, welches eine einfache Iteration und Suche nach einem spezifischen Ergebnis erlaubt.

- `Zend_Service_Technorati_ResultSet`

- `Zend_Service_Technorati_CosmosResultSet`

- `Zend_Service_Technorati_SearchResultSet`

- `Zend_Service_Technorati_TagResultSet`

- `Zend_Service_Technorati_DailyCountsResultSet`

- `Zend_Service_Technorati_TagsResultSet`

- `Zend_Service_Technorati_Result`

- `Zend_Service_Technorati_CosmosResult`

- `Zend_Service_Technorati_SearchResult`

- `Zend_Service_Technorati_TagResult`

- `Zend_Service_Technorati_DailyCountsResult`

- `Zend_Service_Technorati_TagsResult`

- `Zend_Service_Technorati_GetInfoResult`

- `Zend_Service_Technorati_BlogInfoResult`

- `Zend_Service_Technorati_KeyInfoResult`

`Zend_Service_Technorati_GetInfoResult`, `Zend_Service_Technorati_BlogInfoResult` und `Zend_Service_Technorati_KeyInfoResult` repräsentieren Ausnahmen zu den obigen weil Sie nicht zu einem ergebnisset gehören und sie kein Interface implementieren. Sie repräsentieren ein einzelnes Antwortobjekt und sie funktionieren als Wrapper für zusätzliche `Zend_Service_Technorati` Objekte, wie `Zend_Service_Technorati_Author` und `Zend_Service_Technorati_Weblog`.

Die `Zend_Service_Technorati` Bibliothek beinhaltet zusätzliche bequeme Klassen die spezifische Antwortobjekte repräsentieren. `Zend_Service_Technorati_Author` repräsentiert einen einzelnen Technorati Account, welcher auch als Blog Author oder Blogger bekannt ist. `Zend_Service_Technorati_Weblog` repräsentiert ein einzelnes Weblog Objekt, zusätzlich mit allen spezifischen Weblog Eigenschaften die Feed URLs oder Blog Namen. Für komplette Details kann nach `Zend_Service_Technorati` im API Referenz Guide nachgesehen werden.

### Zend_Service_Technorati_ResultSet

`Zend_Service_Technorati_ResultSet` ist das am meisten essentielle Ergebnisset. Der Zweck dieser Klasse ist es von einer abfrage-spezifischen Kind-Ergebnisset-Klasse erweitert zu werden, und sie sollte niemals verwendet werden um ein alleinstehendes Objekt zu initialisieren. Jedes der spezifischen Ergebnissets repräsentiert eine Kollektion von abfrage-spezifischen `Zend_Service_Technorati_Result` Objekte.

`Zend_Service_Technorati_ResultSet` Implementiert das PHP `SeekableIterator` Interface, und man kann durch alle Ergebnisobjekte mit dem PHP Statement `foreach` iterieren.

#### Über Ergebnisobjekte von einer Ergebnisset Kollektion iterieren

    // eine einfache Abfrage durchlaufen
    $technorati = new Zend_Service_Technorati('VALID_API_KEY');
    $resultSet = $technorati->search('php');

    // $resultSet ist jetzt eine Instanz von
    // Zend_Service_Technorati_SearchResultSet
    // sie erweitert Zend_Service_Technorati_ResultSet
    foreach ($resultSet as $result) {
        // irgendwas mit dem Zend_Service_Technorati_SearchResult Objekt anfangen
    }

### Zend_Service_Technorati_CosmosResultSet

`Zend_Service_Technorati_CosmosResultSet` repräsentiert ein Technorati Cosmos Abfrage Ergebnisset.

`Zend_Service_Technorati_CosmosResultSet` erweitert Zend_Service_Technorati_ResultSet.

### Zend_Service_Technorati_SearchResultSet

`Zend_Service_Technorati_SearchResultSet` repräsentiert ein Technorati Search Abfrage Ergebnisset.

`Zend_Service_Technorati_SearchResultSet` erweitert Zend_Service_Technorati_ResultSet.

### Zend_Service_Technorati_TagResultSet

`Zend_Service_Technorati_TagResultSet` repräsentiert ein Technorati Tag Abfrage Ergebnisset.

`Zend_Service_Technorati_TagResultSet` erweitert Zend_Service_Technorati_ResultSet.

### Zend_Service_Technorati_DailyCountsResultSet

`Zend_Service_Technorati_DailyCountsResultSet` repräsentiert ein Technorati DailyCounts Abfrage Ergebnisset.

`Zend_Service_Technorati_DailyCountsResultSet` erweitert Zend_Service_Technorati_ResultSet.

### Zend_Service_Technorati_TagsResultSet

`Zend_Service_Technorati_TagsResultSet` repräsentiert ein Technorati TopTags oder BlogPostTags Abfrage Ergebnisset.

`Zend_Service_Technorati_TagsResultSet` erweitert Zend_Service_Technorati_ResultSet.

### Zend_Service_Technorati_Result

`Zend_Service_Technorati_Result` ist das wichtigste Ergebnisobjekt. Der Zweck dieser Klasse ist es, durch eine abfrage-spezifische Kind-Ergebnisklasse erweitert zu werden, und Sie sollte nie verwendet werden um ein alleinstehendes Objekt zu initiieren.

### Zend_Service_Technorati_CosmosResult

`Zend_Service_Technorati_CosmosResult` repräsentiert ein einzelnes Technorati Cosmos Abfrageobjekt. Es wird nie als alleinstehendes Objekt zurückgegeben, aber es gehört immer einem gültigen Zend_Service_Technorati_CosmosResultSet Objekt an.

`Zend_Service_Technorati_CosmosResult` erweitert Zend_Service_Technorati_Result.

### Zend_Service_Technorati_SearchResult

`Zend_Service_Technorati_SearchResult` repräsentiert ein einzelnes Technorati Search Abfrage Ergebnisobjekt. Es wird nie als alleinstehendes Objekt zurückgegeben, aber es gehört immer einem gültigen Zend_Service_Technorati_SearchResultSet Objekt an.

`Zend_Service_Technorati_SearchResult` erweitert Zend_Service_Technorati_Result.

### Zend_Service_Technorati_TagResult

`Zend_Service_Technorati_TagResult` repräsentiert ein einzelnes Technorati Tag Abfrage Ergebnisobjekt. Es wird nie als alleinstehendes Objekt zurückgegeben, aber es gehört immer einem gültigen Zend_Service_Technorati_TagResultSet Objekt an.

`Zend_Service_Technorati_TagResult` erweitert Zend_Service_Technorati_Result.

### Zend_Service_Technorati_DailyCountsResult

`Zend_Service_Technorati_DailyCountsResult` repräsentiert ein einzelnes Technorati DailyCounts Abfrage Ergebnisobjekt. Es wird nie als alleinstehendes Objekt zurückgegeben, aber es gehört immer einem gültigen Zend_Service_Technorati_DailyCountsResultSet Objekt an.

`Zend_Service_Technorati_DailyCountsResult` erweitert Zend_Service_Technorati_Result.

### Zend_Service_Technorati_TagsResult

`Zend_Service_Technorati_TagsResult` repräsentiert ein einzelnes Technorati TopTags oder BlogPostTags Abfrage Ergebnisobjekt. Es wird nie als alleinstehendes Objekt zurückgegeben, aber es gehört immer einem gültigen Zend_Service_Technorati_TagsResultSet Objekt an.

`Zend_Service_Technorati_TagsResult` erweitert Zend_Service_Technorati_Result.

### Zend_Service_Technorati_GetInfoResult

`Zend_Service_Technorati_GetInfoResult` repräsentiert ein einzelnes Technorati GetInfo Abfrage Ergebnisobjekt.

### Zend_Service_Technorati_BlogInfoResult

`Zend_Service_Technorati_BlogInfoResult` repräsentiert ein einzelnes Technorati BlogInfo Abfrage Ergebnisobjekt.

### Zend_Service_Technorati_KeyInfoResult

`Zend_Service_Technorati_KeyInfoResult` repräsentiert ein einzelnes Technorati KeyInfo Abfrage Ergebnisobjekt. Es bietet Informationen über die eigene tägliche Verwendung des Technorati API Schlüssels.