<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 17175 -->
<!-- Reviewed: no -->
<sect1 id="zend.service.technorati">
    <title>Zend_Service_Technorati</title>

    <sect2 id="zend.service.technorati.introduction">
        <title>Einführung</title>
        <para>
            <classname>Zend_Service_Technorati</classname> bietet ein einfaches, intuitives und
            objekt-orientiertes Interface für die Verwendung der Technorati <acronym>API</acronym>.
            Es bietet Zugriff zu allen vorhandenen <ulink
                url="http://technorati.com/developers/api/">Technorati <acronym>API</acronym>
                Abfragen</ulink> und gibt die originalen <acronym>XML</acronym> Antworten als
            freundliches <acronym>PHP</acronym> Objekt zurück.
        </para>
        <para>
            <ulink url="http://technorati.com/">Technorati</ulink> ist eine der populärsten Blog
            Suchmaschinen. Das <acronym>API</acronym> 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
            <ulink url="http://technorati.com/developers/api/">Technorati <acronym>API</acronym>
                Dokumentation</ulink> oder die <link
                linkend="zend.service.technorati.queries">vorhandenen Technorati Abfragen</link>
            Sektion dieses Dokuments gesehen werden.
        </para>
    </sect2>

    <sect2 id="zend.service.technorati.getting-started">
        <title>Anfangen</title>
        <para>
            Technorati benötigt einen gültigen <acronym>API</acronym> Schlüssel zur Verwendung. Um
            einen eigenen <acronym>API</acronym> Schlüssel zu erhalten muss <ulink
                url="http://technorati.com/signup/">ein neuer Technorati Account erstellt
                werden</ulink>, und anschließend die <ulink
                url="http://technorati.com/developers/apikey.html">API Schlüssel Sektion</ulink>
            besucht werden.
        </para>
        <note>
            <title>API Schlüssel Beschränkungen</title>
            <para>
                Es können bis zu 500 Technirati <acronym>API</acronym> Aufrufe pro Tag durchgeführt
                werden ohne das Kosten anfallen. Andere Limitationen der Verwendung können vorhanden
                sein, abhängig von der aktuellen Technorati <acronym>API</acronym> Lizenz.
            </para>
        </note>
        <para>
            Sobald man einen gültigen <acronym>API</acronym> Schlüssel hat, kann man beginnen
            <classname>Zend_Service_Technorati</classname> zu verwenden.
        </para>
    </sect2>

    <sect2 id="zend.service.technorati.making-first-query">
        <title>Die erste Abfrage durchführen</title>
        <para>
            Um eine Abfrage durchzuführen, benötigt man zuerst eine
            <classname>Zend_Service_Technorati</classname> Instanz mit einem gültigen
            <acronym>API</acronym> Schlüssel. Dann kann eine der vorhandenen Abfragemethoden
            ausgewählt werden, und durch Angabe der benötigen Argumente aufgerufen werden.
        </para>
        <example id="zend.service.technorati.making-first-query.example-1">
            <title>Die erste Abfragen senden</title>
            <programlisting language="php"><![CDATA[
// 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');
]]></programlisting>
        </example>
        <para>
            Jede Abfragemethode akzeptiert ein Array von optionalen Parametern die verwendet werden
            kann um die Abfrage zu verfeinern.
        </para>
        <example id="zend.service.technorati.making-first-query.example-2">
            <title>Verfeinern der Abfrage</title>
            <programlisting language="php"><![CDATA[
// 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);
]]></programlisting>
        </example>
        <para>
            Eine <classname>Zend_Service_Technorati</classname> Instanz ist kein einmal zu
            verwendendes Objekt. Deswegen muß keine neue Instanz für jede Abfrage erstellt werden;
            es kann einfach das aktuelle <classname>Zend_Service_Technorati</classname> Objekt
            solange verwendet werden wie es benötigt wird.
        </para>
        <example id="zend.service.technorati.making-first-query.example-3">
            <title>
                Mehrfache Abfragen mit der gleichen Zend_Service_Technorati Instanz senden
            </title>
            <programlisting language="php"><![CDATA[
// 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();
]]></programlisting>
        </example>
    </sect2>

    <sect2 id="zend.service.technorati.consuming-results">
        <title>Ergebnisse verarbeiten</title>
        <para>
            Es kann einer von zwei Typen von Ergebnisobjekten als Antwort auf eine Abfrage empfangen
            werden.
        </para>
        <para>
            Die erste Gruppe wird durch <classname>Zend_Service_Technorati_*ResultSet</classname>
            Objekte repräsentiert. Ein Ergebnisset Objekt ist grundsätzlich eine Kollektion von
            Ergebnisobjekten. Es erweitert die grundsätzliche
            <classname>Zend_Service_Technorati_ResultSet</classname> Klasse und implementiert das
            <acronym>PHP</acronym> Interface <code>SeekableIterator</code>. Der beste Weg um ein
            Ergebnisset Objekt zu verarbeiten ist dieses mit einem <acronym>PHP</acronym>
            <code>foreach</code> Statement zu durchlaufen.
        </para>
        <example id="zend.service.technorati.consuming-results.example-1">
            <title>Ein Ergebnisset Objekt verarbeiten</title>
            <programlisting language="php"><![CDATA[
// 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
}
]]></programlisting>
        </example>
        <para>
            Weil <classname>Zend_Service_Technorati_ResultSet</classname> das
            <code>SeekableIterator</code> Interface implementiert, kann ein spezifisches
            Ergebnisobjekt gesucht werden indem dessen Position in der Ergebnissammlung verwendet
            wird.
        </para>
        <example id="zend.service.technorati.consuming-results.example-2">
            <title>Ein spezifisches Ergebnisset Objekt suchen</title>
            <programlisting language="php"><![CDATA[
// 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();
]]></programlisting>
        </example>
        <note>
            <para>
                <code>SeekableIterator</code> 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.
            </para>
        </note>
        <para>
            Die zweite Gruppe wird durch spezielle alleinstehende Ergebnisobjekte repräsentiert.
            <classname>Zend_Service_Technorati_GetInfoResult</classname>,
            <classname>Zend_Service_Technorati_BlogInfoResult</classname> und
            <classname>Zend_Service_Technorati_KeyInfoResult</classname> funktionieren als Wrapper
            für zusätzliche Objekte, wie <classname>Zend_Service_Technorati_Author</classname> und
            <classname>Zend_Service_Technorati_Weblog</classname>.
        </para>
        <example id="zend.service.technorati.consuming-results.example-3">
            <title>Ein alleinstehendes Ergebnisobjekt verarbeiten</title>
            <programlisting language="php"><![CDATA[
// 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>";
]]></programlisting>
        </example>
        <para>
            Bitte lesen Sie das
            <link linkend="zend.service.technorati.classes">Zend_Service_Technorati Klassen</link>
            Kapitel für weitere Details über Antwortklassen.
        </para>

    </sect2>

    <sect2 id="zend.service.technorati.handling-errors">
        <title>Fehler behandeln</title>
        <para>
            Jede <classname>Zend_Service_Technorati</classname> Abfragemethode wirft bei einem
            Fehler eine <classname>Zend_Service_Technorati_Exception</classname> Ausnahme mit einer
            bedeutungsvollen Fehlermeldung.
        </para>
        <para>
            Es gibt verschiedene Gründe die Verursachen können das eine
            <classname>Zend_Service_Technorati</classname> Abfrage fehlschlägt.
            <classname>Zend_Service_Technorati</classname> 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 <classname>Zend_Service_Technorati_Exception</classname> Ausnahme
            geworfen. Zusätzlich kann das Technorati <acronym>API</acronym> Interface temporär
            unerreichbar sein, oder es kann eine Antwort zurückgeben die nicht gültig ist.
        </para>
        <para>
            Eine Technorati Abfrage sollte immer mit einem <code>try</code>...<code>catch</code>
            Block umhüllt werden.
        </para>
        <example id="zend.service.technorati.handling-errors.example-1">
            <title>Eine Abfrageausnahme behandeln</title>
            <programlisting language="php"><![CDATA[
$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();
}
]]></programlisting>
        </example>
    </sect2>

    <sect2 id="zend.service.technorati.checking-api-daily-usage">
        <title>Prüfen der täglichen Verwendung des eigenen API Schlüssels</title>
        <para>
            Von Zeit zu Zeit wird man die tägliche Verwendung des <acronym>API</acronym> Schlüssels
            prüfen wollen. Standardmäßig limitiert Technorati die <acronym>API</acronym> Verwendung
            auf 500 Aufrufe pro Tag, und eine Ausnahme wird durch
            <classname>Zend_Service_Technorati</classname> zurückgegeben wenn versucht wird dieses
            Limit zu überschreiten. Man kann diese Information über die Verwendung des eigenen
            <acronym>API</acronym> Schlüssels erhalten indem die
            <methodname>Zend_Service_Technorati::keyInfo()</methodname> Methode verwendet wird.
        </para>
        <para>
            <methodname>Zend_Service_Technorati::keyInfo()</methodname> gibt ein
            <classname>Zend_Service_Technorati_KeyInfoResult</classname> Object zurück. Für
            vollständige Details kann im <ulink url="http://framework.zend.com/apidoc/core/">API
                Referenz Guide</ulink> nachgesehen werden.
        </para>
        <example id="zend.service.technorati.checking-api-daily-usage.example-1">
            <title>Die Information über die tägliche Verwendung des API Schlüssels erhalten</title>
            <programlisting language="php"><![CDATA[
$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 />";
]]></programlisting>
        </example>
    </sect2>

    <sect2 id="zend.service.technorati.queries">
        <title>Vorhandene Technorati Abfragen</title>
        <para>
            <classname>Zend_Service_Technorati</classname> bietet Unterstützung für die folgenden
            Abfragen:
            <itemizedlist>
                <listitem><para><link linkend="zend.service.technorati.queries.cosmos"><code>Cosmos</code></link></para></listitem>
                <listitem><para><link linkend="zend.service.technorati.queries.search"><code>Search</code></link></para></listitem>
                <listitem><para><link linkend="zend.service.technorati.queries.tag"><code>Tag</code></link></para></listitem>
                <listitem><para><link linkend="zend.service.technorati.queries.dailycounts"><code>DailyCounts</code></link></para></listitem>
                <listitem><para><link linkend="zend.service.technorati.queries.toptags"><code>TopTags</code></link></para></listitem>
                <listitem><para><link linkend="zend.service.technorati.queries.bloginfo"><code>BlogInfo</code></link></para></listitem>
                <listitem><para><link linkend="zend.service.technorati.queries.blogposttags"><code>BlogPostTags</code></link></para></listitem>
                <listitem><para><link linkend="zend.service.technorati.queries.getinfo"><code>GetInfo</code></link></para></listitem>
            </itemizedlist>
        </para>

        <sect3 id="zend.service.technorati.queries.cosmos">
            <title>Technorati Cosmos</title>
            <para>
                Eine <ulink url="http://technorati.com/developers/api/cosmos.html">Cosmos</ulink>
                Abfrage lässt einen Sehen welche Blog zu einer gegebenen <acronym>URL</acronym>
                verknüpft sind. Sie gibt ein <link
                    linkend="zend.service.technorati.classes.cosmosresultset"><classname>Zend_Service_Technorati_CosmosResultSet</classname></link>
                Objekt zurück. Für vollständige Details kann nach
                <methodname>Zend_Service_Technorati::cosmos()</methodname> im <ulink
                    url="http://framework.zend.com/apidoc/core/">API Referenz Guide</ulink>
                nachgesehen werden.
            </para>
            <example id="zend.service.technorati.queries.cosmos.example-1">
                <title>Cosmos Abfrage</title>
                <programlisting language="php"><![CDATA[
$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>";
]]></programlisting>
            </example>
        </sect3>

        <sect3 id="zend.service.technorati.queries.search">
            <title>Technorati Search</title>
            <para>
                Die <ulink url="http://technorati.com/developers/api/search.html">Search</ulink>
                Abfrage lässt einen Sehen welche Blogs einen gegebenen Suchstring enthalten. Sie
                gibt ein <link
                    linkend="zend.service.technorati.classes.searchresultset"><classname>Zend_Service_Technorati_SearchResultSet</classname></link>
                Objekt zurück. Für vollständige Details kann nach
                <methodname>Zend_Service_Technorati::search()</methodname> im <ulink
                    url="http://framework.zend.com/apidoc/core/">API Referenz Guide</ulink>
                nachgesehen werden.
            </para>
            <example id="zend.service.technorati.queries.search.example-1">
                <title>Suchabfrage</title>
                <programlisting language="php"><![CDATA[
$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>";
]]></programlisting>
            </example>
        </sect3>

        <sect3 id="zend.service.technorati.queries.tag">
            <title>Technorati Tag</title>
            <para>
                Die <ulink url="http://technorati.com/developers/api/tag.html">Tag</ulink> Abfrage
                lässt einen Sehen welche Antworten mit einem gegebenen Tag assoziiert sind. Sie gibt
                ein <link
                    linkend="zend.service.technorati.classes.tagresultset"><classname>Zend_Service_Technorati_TagResultSet</classname></link>
                Objekt zurück. Für vollständige Details kann nach
                <methodname>Zend_Service_Technorati::tag()</methodname> im <ulink
                    url="http://framework.zend.com/apidoc/core/">API Referenz Guide</ulink>
                nachgesehen werden.
            </para>
            <example id="zend.service.technorati.queries.tag.example-1">
                <title>Tag Abfrage</title>
                <programlisting language="php"><![CDATA[
$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>";
]]></programlisting>
            </example>
        </sect3>

        <sect3 id="zend.service.technorati.queries.dailycounts">
            <title>Technorati DailyCounts</title>
            <para>
                Die <ulink
                    url="http://technorati.com/developers/api/dailycounts.html">DailyCounts</ulink>
                Abfrage bietet tägliche Anzahlen von Antworten die ein abgefragtes Schlüsselwort
                enthalten. Sie gibt ein <link
                    linkend="zend.service.technorati.classes.dailycountsresultset"><classname>Zend_Service_Technorati_DailyCountsResultSet</classname></link>
                Objekt zurück. Für vollständige Details kann nach
                <methodname>Zend_Service_Technorati::dailyCounts()</methodname> im
                <ulink url="http://framework.zend.com/apidoc/core/">API Referenz Guide</ulink>
                nachgesehen werden.
            </para>
            <example id="zend.service.technorati.queries.dailycounts.example-1">
                <title>DailyCounts Abfrage</title>
                <programlisting language="php"><![CDATA[
$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>";
]]></programlisting>
            </example>
        </sect3>

        <sect3 id="zend.service.technorati.queries.toptags">
            <title>Technorati TopTags</title>
            <para>
                Die <ulink url="http://technorati.com/developers/api/toptags.html">TopTags</ulink>
                Abfrage bietet Informationen über Top Tags die durch Technorati indiziert sind. Sie
                gibt ein <link
                    linkend="zend.service.technorati.classes.tagsresultset"><classname>Zend_Service_Technorati_TagsResultSet</classname></link>
                Objekt zurück. Für vollständige Details kann nach
                <methodname>Zend_Service_Technorati::topTags()</methodname> im
                <ulink url="http://framework.zend.com/apidoc/core/">API Referenz Guide</ulink>
                nachgesehen werden.
            </para>
            <example id="zend.service.technorati.queries.toptags.example-1">
                <title>TopTags Abfrage</title>
                <programlisting language="php"><![CDATA[
$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>";
]]></programlisting>
            </example>
        </sect3>

        <sect3 id="zend.service.technorati.queries.bloginfo">
            <title>Technorati BlogInfo</title>
            <para>
                Eine <ulink
                    url="http://technorati.com/developers/api/bloginfo.html">BlogInfo</ulink>
                Abfrage bietet Informationen darüber welcher Blog, wenn überhaupt, mit einer
                gegebenen <acronym>URL</acronym> assoziiert ist. Sie gibt ein <link
                    linkend="zend.service.technorati.classes.bloginforesult"><classname>Zend_Service_Technorati_BlogInfoResult</classname></link>
                Objekt zurück. Für vollständige Details kann nach
                <methodname>Zend_Service_Technorati::blogInfo()</methodname> im
                <ulink url="http://framework.zend.com/apidoc/core/">API Referenz Guide</ulink>
                nachgesehen werden.
            </para>
            <example id="zend.service.technorati.queries.bloginfo.example-1">
                <title>BlogInfo Abfrage</title>
                <programlisting language="php"><![CDATA[
$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>';
]]></programlisting>
            </example>
        </sect3>

        <sect3 id="zend.service.technorati.queries.blogposttags">
            <title>Technorati BlogPostTags</title>
            <para>
                Eine <ulink
                    url="http://technorati.com/developers/api/blogposttags.html">BlogPostTags</ulink>
                Abfrage bietet Informationen über Top Tags die von einem spezifischen Blog verwendet
                werden. Sie gibt ein <link
                    linkend="zend.service.technorati.classes.tagsresultset"><classname>Zend_Service_Technorati_TagsResultSet</classname></link>
                Objekt zurück. Für vollständige Details kann nach
                <methodname>Zend_Service_Technorati::blogPostTags()</methodname> im
                <ulink url="http://framework.zend.com/apidoc/core/">API Referenz Guide</ulink>
                nachgesehen werden.
            </para>
            <example id="zend.service.technorati.queries.blogposttags.example-1">
                <title>BlogPostTags Abfrage</title>
                <programlisting language="php"><![CDATA[
$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>";
]]></programlisting>
            </example>
        </sect3>

        <sect3 id="zend.service.technorati.queries.getinfo">
            <title>Technorati GetInfo</title>
            <para>
                Eine <ulink url="http://technorati.com/developers/api/getinfo.html">GetInfo</ulink>
                Abfrage teilt mit was Technorati über ein Mitglied weiß. Sie gibt ein <link
                    linkend="zend.service.technorati.classes.getinforesult"><classname>Zend_Service_Technorati_GetInfoResult</classname></link>
                Objekt zurück. Für vollständige Details kann nach
                <methodname>Zend_Service_Technorati::getInfo()</methodname> im
                <ulink url="http://framework.zend.com/apidoc/core/">API Referenz Guide</ulink>
                nachgesehen werden.
            </para>
            <example id="zend.service.technorati.queries.getinfo.example-1">
                <title>GetInfo Abfrage</title>
                <programlisting language="php"><![CDATA[
$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>";
]]></programlisting>
            </example>
        </sect3>

        <sect3 id="zend.service.technorati.queries.keyinfo">
            <title>Technorati KeyInfo</title>
            <para>
                Die KeyInfo Abfrage bietet Informationen über die tägliche Verwendung eines
                <acronym>API</acronym> Schlüssels. Sie gibt ein <link
                    linkend="zend.service.technorati.classes.keyinforesult"><classname>Zend_Service_Technorati_KeyInfoResult</classname></link>
                Objekt zurück. Für vollständige Details kann nach
                <methodname>Zend_Service_Technorati::keyInfo()</methodname> im
                <ulink url="http://framework.zend.com/apidoc/core/">API Referenz Guide</ulink>
                nachgesehen werden.
            </para>
        </sect3>

    </sect2>

    <sect2 id="zend.service.technorati.classes">
        <title>Zend_Service_Technorati Klassen</title>
        <para>
            Die folgenden Klassen werden von den verschiedenen Technorati Anfragen zurückgegeben.
            Jede <classname>Zend_Service_Technorati_*ResultSet</classname> 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 <classname>Zend_Service_Technorati_ResultSet</classname> Klasse und implementieren
            das <code>SeekableIterator</code> Interface, welches eine einfache Iteration und Suche
            nach einem spezifischen Ergebnis erlaubt.
            <itemizedlist>
                <listitem><para><link linkend="zend.service.technorati.classes.resultset"><classname>Zend_Service_Technorati_ResultSet</classname></link></para></listitem>
                <listitem><para><link linkend="zend.service.technorati.classes.cosmosresultset"><classname>Zend_Service_Technorati_CosmosResultSet</classname></link></para></listitem>
                <listitem><para><link linkend="zend.service.technorati.classes.searchresultset"><classname>Zend_Service_Technorati_SearchResultSet</classname></link></para></listitem>
                <listitem><para><link linkend="zend.service.technorati.classes.tagresultset"><classname>Zend_Service_Technorati_TagResultSet</classname></link></para></listitem>
                <listitem><para><link linkend="zend.service.technorati.classes.dailycountsresultset"><classname>Zend_Service_Technorati_DailyCountsResultSet</classname></link></para></listitem>
                <listitem><para><link linkend="zend.service.technorati.classes.tagsresultset"><classname>Zend_Service_Technorati_TagsResultSet</classname></link></para></listitem>
                <listitem><para><link linkend="zend.service.technorati.classes.result"><classname>Zend_Service_Technorati_Result</classname></link></para></listitem>
                <listitem><para><link linkend="zend.service.technorati.classes.cosmosresult"><classname>Zend_Service_Technorati_CosmosResult</classname></link></para></listitem>
                <listitem><para><link linkend="zend.service.technorati.classes.searchresult"><classname>Zend_Service_Technorati_SearchResult</classname></link></para></listitem>
                <listitem><para><link linkend="zend.service.technorati.classes.tagresult"><classname>Zend_Service_Technorati_TagResult</classname></link></para></listitem>
                <listitem><para><link linkend="zend.service.technorati.classes.dailycountsresult"><classname>Zend_Service_Technorati_DailyCountsResult</classname></link></para></listitem>
                <listitem><para><link linkend="zend.service.technorati.classes.tagsresult"><classname>Zend_Service_Technorati_TagsResult</classname></link></para></listitem>
                <listitem><para><link linkend="zend.service.technorati.classes.getinforesult"><classname>Zend_Service_Technorati_GetInfoResult</classname></link></para></listitem>
                <listitem><para><link linkend="zend.service.technorati.classes.bloginforesult"><classname>Zend_Service_Technorati_BlogInfoResult</classname></link></para></listitem>
                <listitem><para><link linkend="zend.service.technorati.classes.keyinforesult"><classname>Zend_Service_Technorati_KeyInfoResult</classname></link></para></listitem>
            </itemizedlist>
        </para>
        <note>
            <para>
                <classname>Zend_Service_Technorati_GetInfoResult</classname>,
                <classname>Zend_Service_Technorati_BlogInfoResult</classname> und
                <classname>Zend_Service_Technorati_KeyInfoResult</classname> 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
                <classname>Zend_Service_Technorati</classname> Objekte, wie
                <classname>Zend_Service_Technorati_Author</classname> und
                <classname>Zend_Service_Technorati_Weblog</classname>.
            </para>
        </note>
        <para>
            Die <classname>Zend_Service_Technorati</classname> Bibliothek beinhaltet zusätzliche
            bequeme Klassen die spezifische Antwortobjekte repräsentieren.
            <classname>Zend_Service_Technorati_Author</classname> repräsentiert einen einzelnen
            Technorati Account, welcher auch als Blog Author oder Blogger bekannt ist.
            <classname>Zend_Service_Technorati_Weblog</classname> repräsentiert ein einzelnes Weblog
            Objekt, zusätzlich mit allen spezifischen Weblog Eigenschaften die Feed
            <acronym>URL</acronym>s oder Blog Namen. Für komplette Details kann nach
            <classname>Zend_Service_Technorati</classname> im <ulink
                url="http://framework.zend.com/apidoc/core/">API Referenz Guide</ulink> nachgesehen
            werden.
        </para>

        <sect3 id="zend.service.technorati.classes.resultset">
            <title>Zend_Service_Technorati_ResultSet</title>
            <para>
                <classname>Zend_Service_Technorati_ResultSet</classname> 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
                <link linkend="zend.service.technorati.classes.result"><classname>Zend_Service_Technorati_Result</classname></link>
                Objekte.
            </para>
            <para>
                <classname>Zend_Service_Technorati_ResultSet</classname> Implementiert das
                <acronym>PHP</acronym> <code>SeekableIterator</code> Interface, und man kann durch
                alle Ergebnisobjekte mit dem <acronym>PHP</acronym> Statement <code>foreach</code>
                iterieren.
            </para>
            <example id="zend.service.technorati.classes.resultset.example-1">
                <title>Über Ergebnisobjekte von einer Ergebnisset Kollektion iterieren</title>
                <programlisting language="php"><![CDATA[
// 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
}
]]></programlisting>
            </example>
        </sect3>

        <sect3 id="zend.service.technorati.classes.cosmosresultset">
            <title>Zend_Service_Technorati_CosmosResultSet</title>
            <para>
                <classname>Zend_Service_Technorati_CosmosResultSet</classname> repräsentiert ein
                Technorati Cosmos Abfrage Ergebnisset.
            </para>
            <note>
                <para>
                    <classname>Zend_Service_Technorati_CosmosResultSet</classname> erweitert <link
                        linkend="zend.service.technorati.classes.resultset">Zend_Service_Technorati_ResultSet</link>.
                </para>
            </note>
        </sect3>

        <sect3 id="zend.service.technorati.classes.searchresultset">
            <title>Zend_Service_Technorati_SearchResultSet</title>
            <para>
                <classname>Zend_Service_Technorati_SearchResultSet</classname> repräsentiert ein
                Technorati Search Abfrage Ergebnisset.
            </para>
            <note>
                <para>
                    <classname>Zend_Service_Technorati_SearchResultSet</classname> erweitert <link
                        linkend="zend.service.technorati.classes.resultset">Zend_Service_Technorati_ResultSet</link>.
                </para>
            </note>
        </sect3>

        <sect3 id="zend.service.technorati.classes.tagresultset">
            <title>Zend_Service_Technorati_TagResultSet</title>
            <para>
                <classname>Zend_Service_Technorati_TagResultSet</classname> repräsentiert ein
                Technorati Tag Abfrage Ergebnisset.
            </para>
            <note>
                <para>
                    <classname>Zend_Service_Technorati_TagResultSet</classname> erweitert <link
                        linkend="zend.service.technorati.classes.resultset">Zend_Service_Technorati_ResultSet</link>.
                </para>
            </note>
        </sect3>

        <sect3 id="zend.service.technorati.classes.dailycountsresultset">
            <title>Zend_Service_Technorati_DailyCountsResultSet</title>
            <para>
                <classname>Zend_Service_Technorati_DailyCountsResultSet</classname> repräsentiert
                ein Technorati DailyCounts Abfrage Ergebnisset.
            </para>
            <note>
                <para>
                    <classname>Zend_Service_Technorati_DailyCountsResultSet</classname> erweitert
                    <link linkend="zend.service.technorati.classes.resultset">Zend_Service_Technorati_ResultSet</link>.
                </para>
            </note>
        </sect3>

        <sect3 id="zend.service.technorati.classes.tagsresultset">
            <title>Zend_Service_Technorati_TagsResultSet</title>
            <para>
                <classname>Zend_Service_Technorati_TagsResultSet</classname> repräsentiert ein
                Technorati TopTags oder BlogPostTags Abfrage Ergebnisset.
            </para>
            <note>
                <para>
                    <classname>Zend_Service_Technorati_TagsResultSet</classname> erweitert <link
                        linkend="zend.service.technorati.classes.resultset">Zend_Service_Technorati_ResultSet</link>.
                </para>
            </note>
        </sect3>

        <sect3 id="zend.service.technorati.classes.result">
            <title>Zend_Service_Technorati_Result</title>
            <para>
                <classname>Zend_Service_Technorati_Result</classname> 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.
            </para>
        </sect3>

        <sect3 id="zend.service.technorati.classes.cosmosresult">
            <title>Zend_Service_Technorati_CosmosResult</title>
            <para>
                <classname>Zend_Service_Technorati_CosmosResult</classname> repräsentiert ein
                einzelnes Technorati Cosmos Abfrageobjekt. Es wird nie als alleinstehendes Objekt
                zurückgegeben, aber es gehört immer einem gültigen <link
                    linkend="zend.service.technorati.classes.cosmosresultset">Zend_Service_Technorati_CosmosResultSet</link>
                Objekt an.
            </para>
            <note>
                <para>
                    <classname>Zend_Service_Technorati_CosmosResult</classname> erweitert <link
                        linkend="zend.service.technorati.classes.result">Zend_Service_Technorati_Result</link>.
                </para>
            </note>
        </sect3>

        <sect3 id="zend.service.technorati.classes.searchresult">
            <title>Zend_Service_Technorati_SearchResult</title>
            <para>
                <classname>Zend_Service_Technorati_SearchResult</classname> repräsentiert ein
                einzelnes Technorati Search Abfrage Ergebnisobjekt. Es wird nie als alleinstehendes
                Objekt zurückgegeben, aber es gehört immer einem gültigen <link
                    linkend="zend.service.technorati.classes.searchresultset">Zend_Service_Technorati_SearchResultSet</link>
                Objekt an.
            </para>
            <note>
                <para>
                    <classname>Zend_Service_Technorati_SearchResult</classname> erweitert <link
                        linkend="zend.service.technorati.classes.result">Zend_Service_Technorati_Result</link>.
                </para>
            </note>
        </sect3>

        <sect3 id="zend.service.technorati.classes.tagresult">
            <title>Zend_Service_Technorati_TagResult</title>
            <para>
                <classname>Zend_Service_Technorati_TagResult</classname> repräsentiert ein einzelnes
                Technorati Tag Abfrage Ergebnisobjekt. Es wird nie als alleinstehendes Objekt
                zurückgegeben, aber es gehört immer einem gültigen <link
                    linkend="zend.service.technorati.classes.tagresultset">Zend_Service_Technorati_TagResultSet</link>
                Objekt an.
            </para>
            <note>
                <para>
                    <classname>Zend_Service_Technorati_TagResult</classname> erweitert <link
                        linkend="zend.service.technorati.classes.result">Zend_Service_Technorati_Result</link>.
                </para>
            </note>
        </sect3>

        <sect3 id="zend.service.technorati.classes.dailycountsresult">
            <title>Zend_Service_Technorati_DailyCountsResult</title>
            <para>
                <classname>Zend_Service_Technorati_DailyCountsResult</classname> repräsentiert ein
                einzelnes Technorati DailyCounts Abfrage Ergebnisobjekt. Es wird nie als
                alleinstehendes Objekt zurückgegeben, aber es gehört immer einem gültigen <link
                    linkend="zend.service.technorati.classes.dailycountsresultset">Zend_Service_Technorati_DailyCountsResultSet</link>
                Objekt an.
            </para>
            <note>
                <para>
                    <classname>Zend_Service_Technorati_DailyCountsResult</classname> erweitert <link
                        linkend="zend.service.technorati.classes.result">Zend_Service_Technorati_Result</link>.
                </para>
            </note>
        </sect3>

        <sect3 id="zend.service.technorati.classes.tagsresult">
            <title>Zend_Service_Technorati_TagsResult</title>
            <para>
                <classname>Zend_Service_Technorati_TagsResult</classname> 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 <link
                    linkend="zend.service.technorati.classes.tagsresultset">Zend_Service_Technorati_TagsResultSet</link>
                Objekt an.
            </para>
            <note>
                <para>
                    <classname>Zend_Service_Technorati_TagsResult</classname> erweitert <link
                        linkend="zend.service.technorati.classes.result">Zend_Service_Technorati_Result</link>.
                </para>
            </note>
        </sect3>

        <sect3 id="zend.service.technorati.classes.getinforesult">
            <title>Zend_Service_Technorati_GetInfoResult</title>
            <para>
                <classname>Zend_Service_Technorati_GetInfoResult</classname> repräsentiert ein
                einzelnes Technorati GetInfo Abfrage Ergebnisobjekt.
            </para>
        </sect3>

        <sect3 id="zend.service.technorati.classes.bloginforesult">
            <title>Zend_Service_Technorati_BlogInfoResult</title>
            <para>
                <classname>Zend_Service_Technorati_BlogInfoResult</classname> repräsentiert ein
                einzelnes Technorati BlogInfo Abfrage Ergebnisobjekt.
            </para>
        </sect3>

        <sect3 id="zend.service.technorati.classes.keyinforesult">
            <title>Zend_Service_Technorati_KeyInfoResult</title>
            <para>
                <classname>Zend_Service_Technorati_KeyInfoResult</classname> repräsentiert ein
                einzelnes Technorati KeyInfo Abfrage Ergebnisobjekt. Es bietet Informationen über
                die eigene <link linkend="zend.service.technorati.checking-api-daily-usage">tägliche
                Verwendung des Technorati <acronym>API</acronym> Schlüssels</link>.
            </para>
        </sect3>

    </sect2>

</sect1>
