Änderungen in PHP 6

Während die meisten Seiten wahrscheinlich noch auf PHP4 oder verstärkt auch PHP5 setzen, planen die PHP-Entwickler bereits Version 6.

Im 3. Quartal 2007 soll die neue Version von PHP erscheinen. Ich möchte schon heute ein paar Punkte zusammentragen, die geändert werden sollen, allein um diese bei zukünftigen Projektumsetzungen berücksichtigen zu können.

Mancher möge sagen, dass PHP beinahe die perfekte Sprache ist, doch gibt es durchaus Änderungspotential.

Es wird aufgeräumt

PHP wurde mit dem Ziel entworfen, Programmierer der unterschiedlichsten Sprachen einen schnellen Einstieg in PHP zu gewährleisten.

Aus diesem Grund gab es in den bisherigen Versionen viele Dinge die überflüssig waren. Leider äußerte sich diese Einfachheit in relativ langsamen Scripten. So sollen Funktionsaliase – also Funktionen mit der selben Funktionalität, allerdings unterschiedlichen Namen – entfernt werden.

Abgeschafft werden sollen auch überflüssige Funktionen wie register_globals, magic_quotes, register_long_arrays und der safe_mode. Weiter verschwinden auch die super globalen Variablen $HTTP_*_VARS, welche aus Rückständen von PHP3 mitgeschleppt wurden.

Unicode Support

Heutige Webdeveloper haben es meist nicht einfach, müssen sie doch auf Kleinigkeiten wie Zeichenkodierung noch immer selbst achten, anstatt sich auf den Fokus – die Problemlösung – zu konzentrieren. Mit der Version 6 von PHP soll deswegen eine umfassende Unicode-Unterstützung auf Basis von ICU implementiert werden. Diese kodiert die Daten automatisch beim Empfangen und Senden.

Bisher bekannte Konstrukte wie strlen($str) oder $str{1} sollen auch problemlos mit Unicode funktionieren.

Alternative PHP Cache

Das Cachen von Websites wird immer wichtiger um Ressourcen und damit auch Geld zu sparen. In PHP6 wird APC (Alternative PHP Cache) in den PHP-Kern als Standard-Caching-Framework integriert; allerdings als default nicht aktiviert (Configflag nötig). Eine Frage baut sich mir nur auf. War [d]TurckMMCache[/d] EAccelerator nicht schneller als der APC oder hat sich da etwas getan?

OO-Funktionen

Die Objektorientierte Programmierung war die wohl größte Verbesserung in PHP5. PHP6 setzt dies fort und führt Namespaces ein. Wer Namespaces aus anderen Sprachen wie XML, C++ oder C# kennt, wird dessen Vorzüge kennen. Wenn nicht: Namespaces dienen der Gruppierung von Variablen, Funktionen und Objekten unter einem eigenen Namen. Das erlaubt Entwicklern diese Elemente mehrfach zu nutzen, da sie logisch voneinander getrennt sind. Vielleicht schreibe ich irgendwann ein kleines Tutorial zu Namespaces, wenn Interesse besteht.

Änderungen in Erweiterungen

Was wir heute unter PHP kennen ist größtenteils eine Zusammenstellung einzelner Erweiterungen. So gibt es die GD2-Erweiterungen, um Bilder mit PHP zu erzeugen, PDF-Erweiterungen und viele weitere mehr.

In PHP5.1 wurde der XML-Reader hinzugefügt. In PHP6 ist jetzt eine Erweiterung geplant, die ein einfaches Arbeiten mit XML-Dateien komplettiert: der XML-Writer.

Seitens der Datenbanken soll alles aus dem Kern entfernt werden und auf Module abgelegt werden, was sicher auf lange Sicht die bessere Wahl ist. Weiter wurde der oben angesprochene Unicode-Support auch auf Datenbanken projiziert. In PHP6 soll zudem mehr auf die Datenbank Abstrahierungsschicht [acronym=PDO]PHP Data Objects[/acronym] zurückgegriffen werden.

Eine weitere Änderung in der Core-Distribution ist das Entfernen der ereg regular expressions libary, welche auch zu einer Erweiterung wird. ereg kann man heute als Konkruent von [acronym=PCRE]Perl Compatible Regular Expressions[/acronym] (preg_*) ansehen, hat aber einige Probleme, so dass die PHP-Entwickler sich entschieden haben diese zu entfernen.

Schlusswort

In der neuen PHP Version werden interessante Änderungen angepriesen. Wir werden sehen, ob alles letztlich umgesetzt wird und wie sich PHP6 im Einsatz bewährt.

Im Vordergrund stehen wohl die wichtigsten Sachen im heutigen Web2.0 Zeitalter: Performance, Sicherheit, Beständigkeit.

Mit der Version 6 wird PHP auch den Vorsprung zu anderen Sprachen wie Ruby oder gar [acronym=ASP]Active Server Pages[/acronym] weiter ausbauen können.

Problem sehe ich nur bei Standardapplikationen, die alle umgerüstet werden müssen. Ich denke mit meinen letzten Projekten werde ich nicht viel Schwierigkeiten bekommen, die auf der neuen Version zum Laufen zu bekommen. Hier und dort ein paar Configänderungen und es sollte alles weiter laufen.

Übrigens, auf php.internals kann man Wünsche in der Mailingliste äußern, was in PHP6 noch geändert werden soll. Ich glaube meine Erweiterungsliste wäre zu groß und würde wegen Spamverdacht gelöscht werden :D

Obwohl einiges aus Performancegründen sicher besser direkt in PHP aufgeräumt wär. PHP bietet aber eine hervorragende Schnittstelle um selbst Erweiterungen in C zu schreiben, sodass keine Wünsche (danke Open Source) offen bleiben.

Share

18 Kommentare

  1. 22. Januar 2007 um 13:46

    Das schaut nach guten Verbesserungen aus. Vor allem die Unicode-Unterstützung freut mich. Selbst die offizielle RegEx Unicode Erkennung funktioniert bei mir nicht immer. Ich hoffe auf das beste :)

  2. Gast
    23. Januar 2007 um 12:07

    Gibt’s auch Quellen für diese Behauptungen?

  3. 23. Januar 2007 um 12:17

    php.internals

  4. 3. Februar 2007 um 18:57

    hm, ich hoffe, da wird was gescheides draus. allerdings werden viele hoster php6 wohl eher spät benutzen, da register_globals und safe_mode (unverständlicher weise) noch immer grundvoraussetzung vieler scripte ist….

  5. 15. Februar 2007 um 14:14

    So ist es. Was ich mir auch noch wünsche ist das überladen von Funktionen. Beispielsweise könnte man die Funktion mysql_query() überladen und eine globale Variable beim Aufruf hochzählen, um erfahren zu können wie viele Querys in einem Script auflaufen.

  6. iGEL
    22. Februar 2007 um 06:49

    Naja, von einem Vorsprung gegenüber Ruby zu sprechen, geht an der Sache vorbei. Beide Sprachen haben ihre Vorteile. PHP ist wesendlich verbreiteter, besser dokumentiert und bietet mehr Module. Dafür ist Ruby viel durchdachter und klarer, insbesondere die Objektorientierung von PHP macht auch in der Version 5 wenig Spass. Auch fehlen PHP noch Konzepte wie Code-Blöcke (ich liebe sie!) oder Tainting, welches PHP auf einen Schlag wesentlich sicherer machen würde.

  7. woopi
    21. Mai 2007 um 12:38

    php als scriptsprache bietet sich perfekt an, um schon im kern aop zu unterstützen (siehe zb http://phpaspect.org/). das wäre wirklich einmal ein weiter wurf und sehr weit in die zukunft blickend. ist im moment leider nur mit einer erweiterung zu haben.

  8. Alex
    13. Juni 2007 um 03:32

    Hallo, danke für den interessanten Einblick. Was ich etwas vermißt habe, sind Neuerungen für PHP-CLI. Gibt es da nix Spezielles, oder ist einfach noch nix bekannt?

  9. me
    21. Juni 2007 um 18:14

    wie schaut es denn jetzt mit namespaces aus?

  10. MerCur
    16. August 2007 um 08:23

    Hallo
    Sollte man nicht erst mal PHP5 vernueftig weiterentwickeln.
    In dieser Version kann und muss noch einiges getan werden

  11. Snark
    7. Juli 2007 um 01:54

    Danke, cooler Beitrag! Ich fand sehr aufschlussreich was in Zukunft noch möglich ist! Weil man sich lieber auf die wesentlichen Dinge konzentrieren will, Namaste Snark

  12. 16. Juli 2007 um 13:45

    Als Progger einer mehrsprachigen Webpräzens, bin ich auf die Neuerungen im Bereich Unicode sehr gespannt.

  13. Thomas Worm
    18. Juli 2007 um 13:19

    Sehr schöner Artikel und interessante Neuerungen. Ich hoffe dass auch die Webhoster zeitnah nach Erscheinen der Stable auf PHP6 aufrüsten! Es gibt da zwar wie schon angesprochen das register_globals-Problem, aber Skripte, die mit register_globals=on programmiert wurden, sind sowieso keine guten Skripte! Ich finde das PHP-Team hat den Leuten lang genug Zeit gegeben die Skripte anzupassen!

  14. 5. September 2007 um 21:04

    da werden einige php4 projekte wohl sehr alt aussehen und leider nicht mehr kompatibel sein, oder???

  15. 3. November 2008 um 10:57

    Ich find’s gut, dass mal so richig ausgeräumt wird. Ich glaube, dass das echt mal nötig war!
    Und auch die Einführung von namespaces finde ich vernünftig… man müsste das mit den includes noch irgendwie vereinfachen, weil ich das bisher immer ziemlich nervig fand.

    Insgesammt freu ich mich auf alle Fälle auf die neu Version

  16. Ralf
    17. September 2009 um 14:16

    Ich benötige etwas einfacheres als die Perl Compatible Regular Expressions (preg_*).
    Das birgt die Gefahr von Programmierfehlern gerade bei Nicht-Profi-Programmierern. Da sollte es auch einen Vortschritt geben.

  17. neti
    24. Oktober 2009 um 18:01

    Endlich kommt mal der ganze Sicherheitslücken dreck weg, hab mich das eh schon gefragt wieso das die nicht noch in php5 gemacht haben.

    Projekte wie phpbb (forum) was ich schon immer als total schrottig empfand wird daher auch seine Probleme haben. Der Sourcecode ist total veraltet man hat den nie erneuert ist immernoch auf nen Standart von php3.

  18. Tyco
    4. November 2009 um 11:47

    @me:

    Ich _hoffe_, dass PHP4 dann endlich mal ausstirbt. PHP5 gibt es jetzt doch schon seit 5 Jahren. Das entspricht in der Webprogrammierung einer Generation.
    (Zum Vergleich: AJAX wurde 2005 “erfunden” und hat sich seither etabliert)

    Speziell was OOP betrifft, ist PHP4 ein Graus.

    Eine Sache, die in PHP *wirklich* fehlt, ist Object-Casting.
    Wäre extrem nützlich, wenn zB. sowas machen könnte:
    $x = (MeineAbgeleiteteKlasse)$object;

    Momentan ist es zB. unmöglich, eine vernünftige Extension für PDO zu schreiben, weil man in der PDO-Klasse das Statement nicht auf eine abgeleitete PDOStatement-Klasse casten kann.

Diesen Artikel kommentieren