PHP 8 ist da. Wir haben das zum Anlass genommen, einige Experten der Programmiersprache zu befragen. Sie standen uns unter anderem Rede und Antwort über die Bedeutung der neuen Version und verraten, welche Features in der Praxis besonders relevant sind.
Entwickler: PHP 8 ist da. Wie schätzt ihr die neue Version ein? Ist es ein großer Meilenstein für die PHP-Community oder eine eher unspektakuläre, evolutionäre Weiterentwicklung?
Vitalij Mik: Ich glaube, es ist eher ein unspektakulärer Meilenstein, da es viele gute Neuerungen bereits mit PHP 7.4 gab. Die aktuelle Version 7.4 ist ja schon fast perfekt. Allerdings sehe ich gerne, wie die Sprache sich mehr in eine einheitliche Richtung und hin zu strikter Typisierung bewegt.
Brent Roose: Der Unterschied von 7 zu 8 ist nicht so groß wie der von PHP 5.* zu 7. Meiner Ansicht nach wird die Sprache durch PHP 8 reifer, und da es sich um ein Major-Release handelt, können wir endlich einige Breaking Changes umsetzen.
Susanne Moog: Ich denke, PHP 8 ist ein großer Meilenstein für die PHP-Community. Neben dem JIT-Compiler gibt es viele weitere Features, die eines Blickes Wert sind: Neben Attributen und Union Types sind für mich auch Kleinigkeiten wie die Methoden str_starts_with und str_ends_with, oder dass ::class jetzt auch auf Instanzen genutzt werden kann, ein guter Schritt nach vorn. Und insgesamt bietet mir PHP 8 die Möglichkeit, noch strikter und stringenter zu programmieren, was mir persönlich wichtig ist.
Jörg Moldenhauer: PHP 8 ist definitiv ein wichtiger Schritt. Meiner Meinung nach sind die Neuerungen aber nicht ganz so revolutionär wie beim Sprung auf PHP 7, das zum Beispiel die strikte Typisierung gebracht hat.
Jérémy Pastouret: Im Allgemeinen sind neue Versionen immer gut. Es ist ein Zeichen dafür, dass die Sprache lebendig ist und genutzt wird. Und Änderungen sind wichtig – auch wenn sie manchmal durchaus etwas beängstigend sein können. Ich denke, dass das PHP-Team seit PHP 7 mit der Anzahl der Veröffentlichungen auch die Qualität von PHP erhöht hat – kleine Releases in kurzer Zeit mit interessanten Aktualisierungen im Code. Bei PHP 8 liegt das Hauptaugenmerk auf dem JIT-Compiler. Ich kann es kaum erwarten, ihn mit Phalcon ausprobieren zu können.
Entwickler: Wie wichtig ist für euch ganz persönlich der neue JIT-Compiler?
Mik: Ich glaube nicht, dass der JIT-Compiler bei meiner persönlichen Arbeit eine große Rolle spielen wird oder einen großen Einfluss haben wird. Ich kann das aber wohl erst dann beurteilen, wenn es soweit ist.
Ich denke, PHP 8 ist ein großer Meilenstein für die PHP-Community.
Roose: Ich denke, der JIT-Compiler hat Potenzial für PHP in Bereichen außerhalb der Webprogrammierung, aber als ich ihn an meinen eigenen Projekten probierte, waren die Ergebnisse nicht allzu spektakulär [1]. Tatsächlich könnte ein falsch konfigurierter JIT-Compiler Webanwendungen sogar verlangsamen. Meine Befürchtung ist, dass JIT die Long-Term-Core-Wartung erschweren wird, während es für meine Interessengebiete keinen großen Mehrwert bringt. Ich sage nicht, dass es keinen Platz für den JIT gibt, aber aus meiner Sicht bringt er – wenn überhaupt – nur einen kleinen Mehrwert. Aber wer weiß schon, was in den kommenden Jahren sowohl im Userland als auch im Core geschehen wird? Ich könnte mit meiner Meinung auch sehr wohl falsch liegen.
Moog: Für mich persönlich und die Applikationen, mit denen ich meist arbeite, wird der JIT-Compiler zunächst vermutlich wenig bringen. Die meisten Verbesserungen bringt er bei Programmen, die CPU-lastig sind und viele Berechnungen anstellen müssen – das ist in klassischen Webapplikationen und CMS-Lösungen selten. Trotzdem glaube ich, dass der JIT-Compiler ein großer Schritt nach vorn ist und für PHP neue Betätigungsfelder öffnet, die bisher anderen Sprachen vorenthalten waren. Insbesondere in Kombination mit Lösungen für asynchrones PHP ergeben sich aus meiner Sicht eine Reihe neuer Möglichkeiten. Und ganz persönlich: Vielleicht kann ich mit Version 8 meine Project-Euler-Aufgaben [2] nun mit PHP erledigen.
Moldenhauer: Ich freue mich auf den JIT-Compiler, bin aber noch etwas skeptisch, ob die Performance in typischen Webapplikationen wirklich spürbar besser wird. PHP 7 ist ja schon ziemlich schnell. Dennoch halte ich den JIT-Compiler für eine wichtige und notwendige Optimierung.
Pastouret: Ich gehe davon aus, dass der JIT-Compiler die Performance erhöhen wird – ohne große Änderungen für die Entwickler. Und vielleicht werden einige C-Erweiterungen in PHP konvertiert. Auf diese Weise werden die Erweiterungen von PHP-Entwicklern leichter zu warten sein und dank JIT nicht viel Leistung verlieren.
Entwickler: Abgesehen vom JIT Compiler – auf welche Neuerung in PHP 8 freut ihr euch am meisten?
Mik: Ich freue mich auf Mixed Types und Generics. Es lassen sich enorm viele Bugs von vornherein beheben, wenn man strikter programmiert. Und auch die statischen Analysetools müssen dann weniger arbeiten.
Roose: Named Parameters und Constructor Property Promotion. Sie werden einen erheblichen Einfluss auf mein tägliches Leben als Programmierer haben [3].
Es lassen sich enorm viele Bugs von vornherein beheben, wenn man strikter programmiert.
Moog: Union Types und Attribute – die Kombination bedeutet, dass wir auf Kommentar-Parsing in Zukunft weitestgehend verzichten können. Doc-Block-Anweisungen werden heute bei uns hauptsächlich genutzt, um Union Types zu dokumentieren, da wir sie noch nicht „Type-hinten“ können, und um Zusatzanweisungen an das ORM oder den Serializer zu geben. Meine Hoffnung ist, dass mit PHP 8 beides abgelöst werden kann und sich daraus evtl. sogar ein weiterer Performancevorteil ergibt, wenn das Parsen der Kommentare nicht mehr notwendig ist.
Moldenhauer: Auf die str_contains– sowie str_starts_with– und str_ends_with-Funktionen habe ich schon lange gewartet. Zudem finde ich die Attribute nützlich, da ich viel mit Symfony arbeite und die Annotations nun ein Stückchen schlanker werden. Eine kleine, aber feine Neuerung ist das Trailing-Komma in Parameterlisten.
Pastouret: Abgesehen von vom JIT-Compiler freue ich mich sehr auf einige der neuen Funktionen, die in dieser achten Version erscheinen, z. B. match (eine leichtere Art und Weise, um mit switch/case zu arbeiten) und str_contains (eine großartige Funktion, die ich gerne benutzen werde, weil ich strpos und strstr satt habe).
Entwickler: Welche Veränderung wünscht ihr euch sonst noch in PHP, die es auch in PHP 8 nicht geben wird?
Mik: Typisierte Variablen und bessere Performance durch die Typisierung. Aktuell programmiert man zwar sicherer mit den festen Typen, allerdings ist die Verarbeitung der Datentypen langsamer. Momentan sollte man aus Performancegründen nicht auf die festen Datentypen setzen, das hat auch Rasmus Lerdorf in seinem Talk zu 25 Jahren PHP bestätigt. Wenn die Sprache in zukünftigen Versionen allerdings besser mit Datentypen arbeiten kann, wird man einen deutlichen Boost in seiner Applikation verzeichnen können.
Ich hoffe, dass die nächste PHP-Version populäre Sprachen wie JavaScript herausfordern […]wird.
Roose: Es gibt noch zwei weitere Dinge, die ich gerne in PHP sehen würde, die meiner Meinung nach die Art und Weise, wie wir PHP schreiben, wesentlich beeinflussen werden: Generics und einen zur Kompilierzeit statischen Type Checker. Rasmus Lerdorf erwähnte Letzteren vor zwei Jahren [4]. Mit dem Aufkommen statischer Analysewerkzeuge und der Popularität stark typisierter Sprachen wie TypeScript denke ich, die PHP-Community bereitet sich langsam, aber sicher auf eine solche (Opt-in-)Änderung vor. Aber es wird wahrscheinlich noch ein paar Jahre dauern.
Moldenhauer: Für die Zukunft wünsche ich mir typisierte Arrays, damit man sich den Umweg über Collections sparen kann.
Pastouret: Was die anderen Änderungen betrifft, so hoffe ich, dass die nächste PHP-Version populäre Sprachen wie JavaScript herausfordern und mehr Funktionen mit sich bringen wird, um ein einfaches REST API zu erstellen. Auch würde ich mich über mehr Interaktion mit JS-Frameworks wie React, Vue etc. freuen.
Entwickler: Vielen Dank für Eure Statements!
Die Experten
Susanne Moog ist seit zehn Jahren Teil des TYPO3-Projekts. Ursprünglich studierte sie Medienökonomie, erkannte jedoch schnell, dass Programmieren mehr als nur ein Hobby war, und begann im IT-Bereich zu arbeiten. Sie arbeitet bei der TYPO3 GmbH und dem Team neusta als Scrum Master, Entwicklerin und CTO.
Vitalij Mik arbeitet seit 2011 als PHP-Entwickler. Auf seinem YouTube-Kanal hat er sich das Ziel gesetzt, PHP-Entwicklern dabei zu helfen, besser zu werden und den PHP-Nachwuchs auf seinem Weg zu begleiten.
Brent Roose ist PHP-Programmierer und arbeitet sowohl an Kundenprojekten als auch im Open-Source-Bereich bei der belgischen Firma Spatie. Er ist Blogger bei https://stitcher.io, wo er über PHP und Programmierung im Allgemeinen schreibt.
Jérémy Pastouret ist Autor des Buches: „Phalcon – Développez des applications web complexes et performantes en PHP” und Redakteur der Webseite Les Enovateurs (https://les-enovateurs.com). Jérémy gehört zum Kernteam von Phalcon und trägt zu Open-Source-Projekten bei. Als Unternehmer gründete er Unlock My Data und vor kurzem die Plattform Garwen.
Jörg Moldenhauer ist Diplom-Medieninformatiker und arbeitet seit Sommer 2018 als Webentwickler für die PartnerGate GmbH. Er kümmert sich dort um die Implementierung und das Deployment von PHP-Applikationen in Form von Monolith und Microservices. Davor hat er fünf Jahre als Full-Stack-Entwickler in einer Werbeagentur zahlreiche Projekte in Front- und Backend umgesetzt.