Da hatte ich mir das Paket gerade selbst kompiliert, um die ganzen neuen Features gleich einmal zu testen. Und schon ist es passiert: Ganz offiziell zog gestern die Version 5.4.0 von PHP in Debian Testing ein.
Cool finde ich am neuen PHP vor allem Traits, die hybride Objekte ähnlich dem Polymorphismus in C++ erlauben. Seit Java war das ja verpönt und galt als “unbeherrschbar” ähnlich wie Atomkraftwerke. Stattdessen sollte man lieber mit diesen leeren Worthülsen von Interfaces werkeln. Doch die erlauben zwar eine gewisse Formalisierung von Analogien, aber keinen echten DRY-Code. Mit Traits ist man “im Objekt” und kann daher in $this schalten und walten wie man möchte – was witzige Sachen erlaubt.
Der nun in PHP selbst eingebaute Webserver ist allerdings nicht so das, was ich mir vorstellte. Eher zum Testen gedacht, durchläuft er pro Request jede PHP-Datei noch einmal und baut alle Objekte immer neu auf. Es ist also keine Deploy-and-Run-Lösung wie ein Zend Server. Immerhin kann man beim Testen schnell per F5 wissen, ob alles so läuft wie man möchte. Und für Bibliotheken kann man eine kleine launch.sh beilegen, die die Lösung auch ohne Webserver an Ort und Stelle demonstriert. Allerdings beantwortet der Server nur einen Request auf einmal, was ihn als echten Ersatz für den mittlerweile vielen als zu fett geltenden Apache nichtig macht.
Neu hinzugekommen ist übrigens die Restriktion, dass man eine date.timezone-Einstellung per ini benötigt, sonst gibts eine dicke Warnung beim Erzeugen eines Datetime-Objekts. Ansonsten ist glaube ich noch der Safe-Mode entfallen und die ganzen unnützen magic-quotes-Sachen…Vielleicht noch interessant sind die neuen Schnellzugriffe auf Arrays – erzeugen per [1,2,3] und auch bei der Rückgabe einer Funktion kann jetzt direkt darauf zugegriffen werden: getArray()[5] – das schreit geradezu nach try-catch.
Auf jeden Fall bewegt sich PHP (wie so oft) in die richtige Richtung. Aus der Spaghetti-Sprache für blinkende Vereinshomepages ist mittlerweile eine Feature-H*re geworden, die neben neuen Features rechtzeitig auch über Konsolidierung nachdenken sollte – auf Abwärtskompatibilität muss man eben manchmal verzichten.