• Froscon 2008 – Mehrsprachige Strömungen

    von am 26. August 2008

    Arne Blankerts – wohl von keiner deutschsprachigen PHP Konferenz wegzudenken – hielt diesen Vortrag zum Thema Mehrsprachige Strömungen. Bis jetzt hatte ich noch nicht die Chance mich ein wenig mit der Materie eines Streamwrappers in PHP zu beschäftigen, deswegen hatte ich mir gedacht einfach mal in diesen Vortrag zu gehen, um den Mythos Stream ein wenig entzaubern zu lassen. Da ich selbst gettext verwende, um Phrasen zu übersetzen, war ich natürlich zusätzlich auch an neuen Ansätzen interessiert.

    Da das Thema für mich relativ neu war, konnte ich gut die Stunde zuhören und habe auch ein paar wichtige Erkenntnisse für mich mitgenommen. Die Personen aus dem Publikum, die sich bereits mit der Thematik betraut waren oder irgendwann mal einen Streamwrapper gesehen hatten, durften nicht viel neues mitgenommen haben. Prinzipiell ging es nicht wirklich um Übersetzungen von Texten, sondern vielmehr um die Verwendung eines allgemeinen Streamwrappers. Dieser Wrapper hätte im Vortrag durch jeden x-beliebigen anderen ausgetauscht werden können. Es war also auch für mich, der eine Alternative zum Übersetzen von Texten gesucht hat, eine kleine Enttäuschung. Aber ich war ja auch an den Wrappern interessiert, also nicht ganz fehl am Platze.

    Bevor ich es noch vergesse, sollte ich jetzt am besten mal mit dem Inhalt anfangen. Primär ging es also im Streamwrapper. Die Idee, die hinter einem solchem Strom steckt ist ganz einfach. Nehmen wir zum Beispiel das öffnen einer Datei, dabei ist es mir völlig egal ob diese lokal in meinem Filesystem liegt oder aber irgendwo im Internet. In PHP habe ich den Vorteil, dass ich mit fopen beide problemlos öffnen kann, ohne einen Unterschied mitzubekommen. Und genau hier sieht man schon die ersten zwei Wrapper. Der erste ist spezialisiert auf das Dateisystem, der andere kann mit http umgehen. Will ich nun ein eigenes Protokoll in PHP unterstützen, dann schreibe ich einfach einen neuen Wrapper, registriere ihn und sofort kann fopen auch dieses Protokoll verstehen und mir meine Datei öffnen. Eigentlich eine sehr schöne und einfache Idee. Was Arne Blankerts nun hiermit erstellt, ist eine Art Protokoll für Sprachdateien. Dabei nennt er sein Protokoll “locale”. Alle Dateien, die er über “locale://pfad/zur/datei” includiert oder andersweitig öffnet, werden also durch diesen Wrapper gejagt. Ohne Frage eine nette Idee. Da wir gerade eine Lösung gesucht haben, um etwas ähnliches auf Basis von “template themes” zu bewerkstelligen hat sich also für mich schon gelohnt.

    Leider stieg Arne nicht tiefer in die Materie ein, was bedeutet, dass ich mir ein wenig Material zusammensuchen werde und mich selbst mit dem Thema auseinandersetzen werde. Was aber euer Glück ist, denn ich werde bestimmt darüber berichten.

    Jetzt muss ich natürlich nochmal meinem Blognamen treu bleiben und mich ein wenig über PHP aufregen. Streamwrapper austauschbar zu machen und neue hinzuzufügen ist schon eine sehr schöne objektorientierte Idee. Aber warum gibt es dann kein Interface, dass einen Streamwrapper darstellt? Meiner Meinung nach schreit das doch förmlich nach einen Interface. Man hat public Funktionen, die die Klasse auf jeden Fall mitbringen muss und die einer bestimmten Definition folgen müssen. Naja, mir fällt bei solchen Problemen nur die Standardantwort ein. Wir konnten das aus historischen Gründen nicht anders lösen. Nichtsdestotrotz sind Streamwrapper eine schöne Idee und jeder sollte mal einen geschrieben haben, um ein Gefühl für diese Helfer zu bekommen.

    Vielleicht noch eine kleine Anmerkung für Arne: Code wird kommentiert und Variablen sollten einen aussagekräftigen Namen haben, zumindest wenn es der Code ist, den man auf einer Konferenz vorstellt!

    Nils Langner

    Auch wenn Ihr es mir nicht glauben werdet, aber ich habe nichts gegen PHP. Ich rege mich einfach nur gerne auf. Ok so schlimm ist es auch nicht. Eigentlich wollte ich schon immer einen Blog haben und da ...

    Zum Profil von Nils Langner

    6 Kommentare »


    • Froscon 2008 | PHP hates me
      am 26. August 2008 um 09:59 Uhr

      [...] 11:15 Uhr – 12:00 Uhr – Mehrsprachige Strömungen von Arne Blankerts. [...]


    • Frank Kleine
      am 26. August 2008 um 21:02 Uhr

      Klingt absolut nach dem gleichen Vortrag, den ich von ihm bereits auf der Spring IPC 2007 gehört habe, und von dem ich ziemlich enttäuscht war. Immerhin hat er mich damit zu einem eigenen Vortrag inspiriert, den ich dann auf der IPC letztes Jahr im November gehalten habe, die Folien dazu sind unter http://talks.frankkleine.de/streamwrappers.pdf zu finden.

      Die Info auf Folie 9 ist mittlerweile veraltet, ich habe das nicht in SimpleTest eingebracht sondern mit vfsStream (http://vfs.bovigo.org/) als eigenes Paket zur Verfügung gestellt.


    • Frank Kleine
      am 26. August 2008 um 21:07 Uhr

      Bezugnehmend auf Deinen Ärger zum fehlenden Interface wäre zu sagen, dass es dann mehrere Interfaces sein müssten, nicht nur eins. Der Vorteil der aktuellen Implementation liegt darin, dass ich nur die Methoden in der StreamWrapper-Klasse haben muww, die auch wirklich benötigt werden. Implementiere ich nur Lesezugriff auf Dateien, kann ich die Methoden für Schreib- und Verzeichniszugriffe komplett weglassen. Wollte man das über Interfaces abbilden würde man sicherlich eine Hand voll Interfaces bekommen – ganz schön kompliziert für eine Sprache wie PHP. ;-)
      Aber schöner wäre es mit Interfaces, keine Frage.


    • Nils Langner
      am 27. August 2008 um 20:00 Uhr

      Hey Frank, wenn du Lust hast kannst du ja gerne einen Gastbeitrag auf Basis deines Vortrags zum Thema Streamwrapper machen.
      PS: Arbeitest du eigentlich im Team von Daniel J.? Müsste ab und zu mit ‘nem “–quiet” Shirt rumlaufen.


    • Froscon 2008 - PHP 5.3 | PHP hates me
      am 28. August 2008 um 08:14 Uhr

      [...] Antwort auf das java Archivformat JAR. Ab 5.3 unterstützt PHP nativ dieses Dateiformat. Dank eines Streamwrappers kann man so direkt Dateien ansprechen, die mit phar komprimiert [...]


    • Frank Kleine
      am 28. August 2008 um 17:46 Uhr

      Ich blogge eigentlich bevorzugt unter stubbles.org, aber ich werde mir das mal durch den Kopf gehen lassen.

      Gleiches Team nicht, aber gleiche Abteilung. Das T-Shirt ist mir bekannt, ich habs ja mitfinanziert. ;-)

    RSS Feed für Kommentare zu diesem Artikel. TrackBack URL

    Hinterlasse einen Kommentar

    Werbung
    PHP Magazin
    Ausgabe 02/2010

    Dieses Mal mit Artikeln zu den Themen OpenSocial und Apache Shindig, Graphentheorie, Smarty3

    t3n
    Ausgabe 19

    Social Media (R)evolution. Weitere Themen sind noSQL, Crowdsourcing ...

    PHP Journal
    Ausgabe 2/2010

    PHP & Windows optimal nutzen, die besten PHP-CMS im Überblick, Google-API mit Zend Framework nutzen.

    Wir wurden schon öfters gefragt, ob man uns nicht irgendwie unterstützen kann. Die Antwort war immer einfach: Klar! Am einfachsten ist es eure nächsten Einkäufe bei Amazon über unsere Link abzuwickeln. Damit würdet ihr uns schon sehr helfen. Über Co-Autoren freuen wir uns aber noch mehr.