Facebook
Twitter
Google+
Kommentare
6

Froscon 2008 – Mehrsprachige Strömungen

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!

Ü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

6 Comments

  1. 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.

    Reply
  2. 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.

    Reply
  3. 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.

    Reply
  4. 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. 😉

    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