Facebook
Twitter
Google+
Kommentare
12

Twittern mit PHP und dem Zend Framework

Heute wird mal wieder ein wenig gezwitschert. Ihr wisst ja, dass ich seit einiger Zeit jeden Morgen bei Erscheinen eines neuen Artikels einen tweet absetze. Da ich aber meistens im diese Zeit noch nicht mal aufgestanden bin und auch nicht vor habe es in Zukunft zu ändern, musste ein Automatismus her.

Diesen gibt es schon eine ganze Weile. Ich hatte mich damals für die wirklich charmante und kurz gehaltene Version einer tweet() Methode von Fabien Potencier entschieden. Das Ding lief auch eine ganze Zeit lang gut durch. Nur leider versagt das System seit „kurzem“ immer häufiger. Es muss also eine neue Lösung her. Da ich in der letzten Zeit immer mal wieder mit dem Zend Framework rumgespielt habe, war es natürlich klar, dass ich dort erstmal nachschauen werde. Zend_Service_Twitter heißt hier die Zauberklasse. Und was soll ich sagen … mit zwei Zeilen Code hatte ich alles erledigt:

  $twitter = new Zend_Service_Twitter($username, $password);
  $response = $twitter->status->update($message);

Genau die gleichen Zeilen Code werdet ihr bestimmt auch in der Doku des Frameworks finden. Warum ich es trotzdem schreibe? Ganz einfach! Ich beschäftige mich gerade mit dem Thema und musste es eh umbauen, da habe ich gedacht ich nutze den Augenblick und schreibe das noch mal zusammen. Naja einen anderen Grund gibt es auch noch. Ich finde es schön, wie Zend es geschafft hat eine doch relativ komplexe Geschichte, wie eine tweet absetzen in so ein wunderbar einfaches Konstrukt gepackt hat. Hut ab. Genau so stelle ich mir saubere Programmierung vor.

Vielleicht habe ich mit dem Artikel auch in jemanden Interesse geweckt ein wenig mit dem Zend Framework zu spielen. Die Angst, dass man das große MVC Monster wecken muss, nur weil man eine Kleinigkeit wünscht, sollte auf jeden Fall genommen sein.

Über den Autor

Nils Langner

Nils Langner ist der Gründer von "the web hates me" und auch der Hauptautor. Im wahren Leben leitet er das Qualitätsmanagementteam im Gruner+Jahr-Digitalbereich und ist somit für Seiten wie stern.de, eltern.de und gala.de aus Qualitätssicht verantwortlich. Nils schreibt seit den Anfängen von phphatesme, welches er ebenfalls gegründet hat, nicht nur für diverse Blogs, sondern auch für Fachmagazine, wie das PHP Magazin, die t3n, die c't oder die iX. Nebenbei ist er noch ein gern gesehener Sprecher auf Konferenzen. Herr Langner schreibt die Texte über sich gerne in der dritten Form.
Kommentare

12 Comments

  1. naja, wenn man das passwort und den usernamen hat braucht man nur 8-10 curl Zeilen um ein tweet zu setzen, da ist die library etwas übertrieben. Die twitter api sollte über oauth bedient werden da es sicherer ist und der curl support (worauf das ding ja basiert) bald von twitter geschlossen wird.

    Reply
  2. @antpaw: Naja aber die Fabien Lösung hat einiges an Zeichen (da komme ich mit 80 nicht hin) und außerdem bin ich Anwender der Bibliothek. Ist mir also eigentlich egal, wie groß sie ist, solange sie performant ist.

    Reply
  3. Bei den zwei Zeilen fehlt die Fehlerprüfung. Und zu Lehrzwecken mal die native PHP-Lösung, auch ohne Fehlerprüfung:

    $opts = array(‚http‘ =>
    array(
    ‚method‘ => ‚POST‘,
    ‚header‘ => ‚Content-type: application/x-www-form-urlencoded‘,
    ‚content‘ => http_build_query(array(’status‘ => $status))
    );
    $result = file_get_contents(„http://$user:$password@twitter.com/statuses/update.json“, false, stream_context_create($opts));

    Und „Performance“ halte ich das das falsche Kriterium – die HTTP-Kommunikation dürfte bei allen Wegen das mit Abstand langsamste sein, da dann den Codeaußenrum zu „optimieren“ hat keinen Effekt. Wichtiger is Wartbarkeit, Lesbarkeit, Robustheit, …

    Reply
  4. Ich sehe das als Anwender einer Bibliothek genauso. Man sollte nicht unbedingt die Größe im Hintergrund bei der Auswahl zu Rate ziehen, wenn die Grundperformance den eigenen Anforderungen entspricht.

    Reply
  5. Ich denke mal, dass das ZF bald auf die neue Twitter API umstellen wird. Aktuell neu ist ja erstmal, dass es überhaupt Zend_Oauth gibt. SOmit steht der Änderung eigentlich nichts mehr im Wege 🙂

    Reply
  6. Hmm.. im Grunde stimme ich euch allen zu. Aber ich frag mich dennoch, warum die alte Funktionalitaet seit kurzem immer haeufiger versagt und wie sich das aeussert. Weiss da jemand mehr?

    Reply
  7. Das ist es, was ich am Zend Framework so schätze. Alles geht einfach und schafft so auch einen gut lesbaren Code. Nur wegen der Twitter API würde ich das ZF nun aber auch nicht ins Boot holen. Das stört mich überhaupt am ZF sehr: man kann nicht einzelne Komponenten aus dem Gesamtpaket auskoppeln und für sich verwenden, sondern muss wegen der vielen gegenseitigen Abhängigkeiten das gesamte Framework mit herum schleppen.

    Grüße
    Tobi

    Reply
  8. Nur weil man sich die kompletten Sourcen des Zend-Frameworks in einem Verzeichnis legen muss, heißt das nicht zwangsläufig dass man irgendwelche Abhängigkeiten davon hat. Insbesondere solche Schnittschnellen sind sehr lose gekapselt. Und ein paar MB PHP-Files irgendwo auf den Server zu legen sollte nun wirklich nicht stören wenn man dabei so viel (Entwicklungs-)Zeit sparen kann.

    Reply
  9. Abgesehen davon, dass ich das Thema Twitter und ZF schon vor geraumer Zeit angeschnitten habe (http://phphacker.net/2009/05/07/hausgemachte-twitter-services/): Sooo wild sind die Abhängigkeiten im ZF nun auch wieder nicht. Um genau zu sein ist es durchaus Möglich, einzelne Komponenten zu benutzen, ohne (wie Nils beschrieben hat) das komplette MVC anzuwerfen. Und das ist auch (zum Teil) gewollt. Und wenn gewisse Klassen, die auf HTTP-Ebene Daten rausschicken oder holen übergebene URLs mit den entsprechenden Validator-Klassen prüfen, so halte ich das für eine gerechtfertigte Abhängigkeit. Und wem die knappen 25 MB auf der Platte weh tun, der sollte mal seine Prioritäten überdenken …

    Reply
  10. Jetzt muss ich hier auch mal was schreiben sogar was passendes 🙂 . Ich selbst nutze Zend nicht und hatte daher mal vor Ewigkeiten etwas niedergeschrieben. Ist vllt nicht der sauberste und beste Code aber er funktioniert 🙂 . Hier der Link zum Twitter Plugin.

    Reply

Leave a Comment.

Link erfolgreich vorgeschlagen.

Vielen Dank, dass du einen Link vorgeschlagen hast. Wir werden ihn sobald wie möglich prüfen. Schließen