thePHP.cc Logo English Kontakt
Von .phtml zu Domain-Driven Design

Von .phtml zu Domain-Driven Design

Erinnern Sie sich noch an die Dateiendung .phtml ? Für diejenigen unter Ihnen, die das tun: ja, ich bin schon so lange dabei. Ich erspare Ihnen die Details, aber das ist die Zeit, in der ich mit PHP angefangen habe. Warum ich Ihnen das erzähle, werden Sie sich fragen? Weil Ben Ramsey die PHP-Community gebeten hat, über unsere erste Begegnung mit PHP zu bloggen, im Hinblick auf das 20-jährige Jubiläum der Sprache.

Nur ein paar Wochen nachdem ich angefangen hatte, PHP zu benutzen, kam es in Mode, das Suffix .php3 zu verwenden – und ignorierte dabei stumpf die Tatsache, dass es eine ziemlich dumme Idee ist, die Versionsnummer einer Programmiersprache in einer Dateierweiterung zu kodieren. Aber so war es auch mit dem Vermischen von HTML und Anwendungscode, zumindest aus heutiger Sicht. Bevor mir das klar wurde, war auch ich dieser Sünde schuldig.

Eines meiner ersten echten PHP-bezogenen Projekte war die Konvertierung einer Datenbank und ihrer Suchoberfläche von einer CD-ROM in das moderne Zeitalter von Internet und Web. Ich habe dieses Projekt von einem ISP übernommen, der daran gescheitert war, es mit ColdFusion zum Laufen zu bringen. Sie können sich wahrscheinlich vorstellen, dass das Projekt innerhalb einer harten Deadline fertig werden musste. Rückblickend fühlt es sich fast wie ein Wunder an, dass sich das Ergebnis als recht stabil und einigermaßen schnell herausstellte. Zumindest war es viel schneller als die altmodische CD-ROM.

Aber natürlich war das nicht mein allererstes Programmierprojekt überhaupt: wie so viele meiner Generation habe ich mit dem berühmten Commodore C64 angefangen. Vor dreißig Jahren, als ich zehn Jahre alt war, ergaben sich meine Eltern meinem Betteln und kauften mir einen. Inklusive dem unverwüstlichen Floppy Drive 1541. Ich war das glücklichste Kind der Welt. Ich erinnere mich, dass ich die ersten Wochen nach dem Besitz des Brotkastens damit verbrachte, jedes Spiel zu spielen, das ich in die Finger bekam, und meine Eltern damit zu nerven, dass ich gefühlt viel zu viel Zeit im und vor dem Computer verbrachte. Das Spielen von Spielen wurde mir mit der Zeit ziemlich langweilig. Ich wollte wissen und verstehen, wie die Dinge funktionieren. Also fing ich an, BASIC zu lernen und etwas später einige begrenzte Mengen Assembler, da ich mich durch die Syntax von BASIC und die Notwendigkeit von Zeilennummern eingeschränkt fühlte. Es stellte sich heraus, dass die Kombination von BASIC und Assembler eine ziemlich mächtige Sache war. Aber genug des Retrocomputings: SYS64738!

Es dauerte, bis ich in der Schule Informatikkurse belegte, bis ich in Erwägung zog, eine andere Programmiersprache zu lernen: Turbo Pascal. Obwohl es ursprünglich nicht meine bevorzugte Sprache war – es war einfach die Sprache, die in der Schule gelehrt wurde – kam ich schnell von den eher einfachen Aufgaben, die mir gestellt wurden, dazu, die ganze Macht der Sprache zu erkunden. Die Idee, bestimmte Funktionen zu kapseln und in Bibliotheken zu gruppieren, Pascal nennt diese Units, eröffnete eine neue Welt. Lustigerweise fühle ich mich jedes Mal, wenn ich eine namespaced Klasse in PHP importiere, an diese Tage erinnert, da Pascal verlangte, jede verwendete Unit auch zu deklarieren: uses qsort; .

Nachdem ich diverse völlig nutzlose Anwendungen und einige wenige tatsächlich hilfreiche Tools mit Turbo Pascal geschrieben hatte, stolperte ich schließlich und unweigerlich über Object Pascal. Und damit in die Welt der objektorientierten Programmierung. Kurz darauf entwickelte ich meine allererste kommerzielle und kundenorientierte Anwendung mit Delphi, der nächsten Generation von Object Pascal, die Borlands Antwort auf Visual Basic war.

Als es offensichtlich wurde, dass diese Internet-Sache eine Weile dauern würde, begann ich mit der Web-Entwicklung und betrieb mein eigenes kleines ISP-Unternehmen, um die passenden Hosting-Umgebungen bereitzustellen. Es brauchte nur ein paar Versuche, um zu erkennen, dass die Verwendung von CGI und kompilierten Pascal-Anwendungen nicht der richtige Weg für die Web-Entwicklung war. Als ich mich nach Alternativen umsah und in Internet Relay Chats (IRC) aktiv war, kam ich mit PHP in Berührung und trat bald den PHP-IRC-Kanälen bei. Dank der Hilfe der bereits aktiven Mitglieder der PHP-Community avancierte ich vom anfänglichen Stellen allerlei potenziell dummer Fragen zur Unterstützung anderer Anfänger und zur Beratung in Hosting-Fragen.

Anfang 2005 wurde ich von Christopher Kunz, Co-Autor des deutschen PHP-Sicherheitsbuches und aktives Mitglied des IRC-Kanals #php.de , angesprochen, ob ich nicht Lust hätte, bei der Frühjahrsausgabe der International PHP Conference (die damals in Amsterdam stattfand) einen PHP-Einsteiger-Workshop mitzumoderieren. Es war diese Konferenz, die mich tief in der PHP-Community verwurzelte und wo ich auch Sebastian Bergmann zum ersten Mal begegnete. Sebastian versuchte schon damals, der Welt zu sagen, dass sie sich um Softwarequalität kümmern sollte, aber kaum jemand scheint damals Lust gehabt zu haben, ihm zuzuhören. Ich muss zugeben, dass ich auch die Notwendigkeit und die Macht von automatisierten (Unit-)Tests völlig unterschätzt habe. Rückblickend betrachtet habe ich auch bis PHP 5 und der Hilfe von Stefan Priebsch gebraucht, um die Bedeutung von objektorientierter Entwicklung wirklich zu begreifen und auf eine Art und Weise zu denken, die heute meist als Domain-Driven Design bezeichnet wird.

Es scheint, dass die Leute meine Art, die Dinge zu erklären, mögen, denn Konferenzen auf der ganzen Welt laden mich ein (und laden mich immer wieder ein), um über PHP, Sicherheit und Infrastruktur zu sprechen. Ich habe auch verschiedene Artikel in Magazinen geschrieben und Kapitel zu Büchern beigesteuert. Ich bin der festen Überzeugung, dass die PHP-Community einer der besten Orte ist, an dem ich hätte landen können, um ein Teil davon zu sein. Es war bisher eine lustige Fahrt und ich freue mich schon auf die kommende neue Hauptversion.