Sven Rautenberg: PHP 7.0 - Schritt in die richtige Richtung, aber Chance verfehlt

Beitrag lesen

Moin!

Welche Vorteile wären das? Werde mal konkret - nicht immer dieses Wischiwaschi-Gebashe von PHP.

Gerne, hier ist meine lose zusammengestellte und unvollständige Wunschliste von Entwicklungen, die ich für diskussionswürdig halte. Mit der Befürwortung eines Features möchte ich nicht ausdrücken, dass es um jeden Preis in PHP landen sollte, es ist selbstverständlich oft Abwägungssache.

Für alle Verbesserungswünsche gilt: RFC schreiben, Unterstützer gewinnen, Voting überstehen.

Am meisten begehre ich eine verbesserte Unterstützung für funktionale Programmierung. PHP Closures sind durch die notwendige use-Klausel unfassbar verbose, da erhoffe ich mir eine deutliche knappere Syntax mit impliziter Bindung freier Variablen.

Syntax-Änderungen sind nicht mal einfach eingebaut. Du musst kompatibel zu existierendem Code bleiben. Wenn dein Vorschlag bedeuten würde, dass existierender Code plötzlich mehr Variablen einbindet, und nicht mehr nur die explizit benannten, wird niemand so ein Feature einbauen wollen.

Außerdem wünsche ich mir ein asynchrones Event-Handling für langlebige PHP-Prozesse

Kann man sich machen, wenn man will. Braucht die Mehrheit von Wordpress-Blogs nicht.

und mehr Designfreiheiten wenn es zur Modelleriung komplexer Kontrollflüsse kommt, sprich APIs oder syntaktischen Zucker für Funktions-Komposition, Promises, Streams oder Continuation Passing Style.

PHP ist kein Javascript. Du kannst gern deinen JS-Code in die PHP-V8-Extension packen und ausführen.

Performance-Optimierungen für endrekursive Funktionen sind ein Muss, vor allem sollten endrekursive Funktionen keine Stackoverflows auslösen. Pattern-Matching bei Funktionsdefinitionen wäre der Hit.

Ich finde 100% Performanceoptimierung für realen Code schon ganz nett.

Das PHP-Modulsystem ist mir der nächste große Dorn im Auge. Es kann kaum sein, dass eine highlevel Skriptsprache ein lowlevel Modulsystem wie C benutzt, das auf Datei-Einbettung basiert. Ein dringend notwendiges Feature ist die Möglichkeit alle globalen Definitionen zu verstecken und stattdessen mit qualifizierten Imports/Exports zu arbeiten.

Das Modulsystem von PHP ist der Grund, warum heutzutage alle damit Arbeiten, und warum man fast alle beliebige Infrastruktur an PHP anbinden kann. Was interessiert dich als PHP-Entwickler die Implementierung der Extensions?

Du kannst bereits jetzt im Namespace arbeiten und die gesamte Welt um dich herum ignorieren.

Die objektorientierten Features haben verglichen mit den funktionalen Features in der Vergangheit schon sehr viel Aufmerksamkeit erfahren. Hier wünsche ich mir, dass weiterhin prozedurale APIs durch objektorientierte APIs abgelöst werden, so wie es mit mysql und PDO geschehen ist. Konstruktur-Parameter-Promotion wie in Hack könnte viel Boilerplate-Code sparen. Ebenfalls von Hack inspiriert fände ich Trait- und Interface-Requirements wichtig, um verstärkt Objektkomposition über Vererbung zu featuren.

Es hat 10 Jahre gedauert, die MySQL-Extension rauszuwerfen. Deswegen ist es sehr unwahrscheinlich, dass existierende APIs mal eben mir-nichts-dir-nichts durch eine Alternative ersetzt werden.

PHPs Basisoperationen auf primitiven Datentypen sind auch nicht das, was ich mir von einer highlevel Sprache erhoffe. String-Manipulation sollte von Haus aus UTF8-kompatibel sein oder zumindest per Opt-In aktiviert werden können. Ganz ähnlich würde ich mir exakte Operationen zum Rechnen mit rationalen Zahlen wünschen, das selbe für reelle und komplexe Zahlen wäre ein Sahnehäupchen.

Du weißt, warum PHP 6 gescheitert ist? Man baut nicht mal eben UTF-8-Unterstützung ein. In meiner täglichen Arbeit vermisse ich da jedenfalls nichts. Es gibt UTF-8-fähige Stringfunktionen, wenn man denn mal eine braucht.

Und ganz ganz dringend sollte PHP seine Debugging-Kapazitäten erhöhen. Die Debugging-SAPI von PHP 5.6 ist nie gelandet. Die beiden drittanbieter Debugger XDebug und Zend-Debugger sind brauchbar, bilden aber auch nicht die Sperrspitze der Entwickler-Tools. Unterstüztung für Timetravel-Debugging wäre ein wahres Killerfeature. Ebenso würde ich eine Möglichkeit feiern, bei Fehlern den Systemzustand zu snapshotten und später auf einer Debugging-Umgebung wieder herzustellen.

Kauf die die Zend-Server-Lizenz, dann kriegst du da was. Anscheinend braucht das aber kaum jemand.

Zuletzt wäre da noch PHPs unglaublicher Bulk an Konfigurations-Möglichkeiten, den müsste man dringend aufräumen. Hier sollte man in Kooperation mit Deployment-Platformen und Paket-Managern eine langfristige Lösungsstrategie entwickeln. Mehr Kooperation würde Zend sowieso gut stehen, ein Standard-Kommitee würde mit Sicherheit das Sprachdesign, die Implementierung und die Community auf lange Sicht stärken.

Es hat kaum weniger lange gedauert, das Setting für Magic Quotes rauszuwerfen, wie die MySQL-Extension.

Grüße Sven