Vorschau: Was bringt PHP 5.5

saftmeister

Nutze den Saft!
Nach etwas mehr als einem Jahr kommt nun PHP 5.5 in die Startlöcher. Mittlerweile wird der Branch langsam stabil, also Zeit, sich ein bisschen aufzuschlauen, was es denn alles neues Interessantes geben wird.

1. Endlich ein Opcode-Cache per Default! Ja, richtig gelesen, PHP 5.5 wird mit einem Cache ausgestattet sein, der den zu Opcodes kompilierten PHP-Code cached. Den Zend Optimizer gab es zwar schon seit einiger Zeit, aber jetzt wird er Open-Source und unter die PHP-Lizenz gestellt. Damit kommt jeder in den Genuss von schnellem PHP. Eine englische Erklärung gibt es hier: https://wiki.php.net/rfc/optimizerplus

2. Generator-Funktionalität. Was ist es, wofür braucht man es? Dies genau zu erklären, würde Zweck des Threads verfehlen, daher hier nur ein Link auf die englische Erklärungsseite: https://wiki.php.net/rfc/generators

3. Das finally-Keyword. Nunja, Java hat es schon ewig, PHP bekommt es jetzt auch. Leute, die viel mit Klassen arbeiten, wird es freuen. Mit Hilfe von finally kann ein Code-Block definiert werden, der auch ausgeführt wird, wenn eine Exception nicht behandelt wird. Näheres und Code-Beispiele hier im RFC: https://wiki.php.net/rfc/finally

4. list() in foreach. Bestimmt kennt der eine oder andere die Funktion list(). Bislang war es nicht möglich, diese innerhalb einer foreach-Schleife zuverwenden, ab 5.5 geht das nun. Hier das RFC: https://wiki.php.net/rfc/foreachlist

5. empty() und isset() können jetzt auch mit anderen Operanden als Variablen (z.B. Funktionsrückgaben) umgehen. Hier das RFC: https://wiki.php.net/rfc/empty_isset_exprs

6. !!Support für Windows XP und Server 2003 wurde entfernt!! Den ein oder andern wird das enttäuschen, entweder kein PHP 5.5 verwenden zu können, oder sein OS updaten zu müssen. Aber prinzipiell ist es gut, alte Zöpfe abzuschneiden. Hoffentlich kommt da noch das eine oder andere sinnlose Feature mehr raus...

7. assert() hat einen zweiten optionalen Parameter, um eine spezifische Meldung ausgeben zu können - Unittester wird es freuen.

8. Einige Änderungen bei set_error_handler() und set_exception_handler().

9. Diverse neue Konstanten für curl. Es sind zu viele, sie alle aufzulisten und erklären.

10. intl wurde sehr stark erweitert. Unter anderem ist es jetzt notwendig, libicu zu linken, was dazu führt, das Unicode-Verarbeitung möglich gemacht wird.

11. Ein paar mcrypt-Funktionen sind als deprecated (veraltet) eingestuft. Es handelt sich um mcrypt_ecb(), mcrypt_cbc(), mcrypt_cfb() und mcrypt_ofb().

12. MySQLi kann kein LOAD LOCAL DATA INFILE mehr, wenn libmysql verwendet wird. Aus Stabilitätsgründen. Dafür hat es eine SHA256-Authentifizierung bekommen. Außerdem gibt es nun auch prozedurales und OOP-Transaktionshandling mit der Funktion mysqli_begin_transaction() bzw. Klassen-Methode mysqli::begin_transaction().

13. Der /e-Modizierer für die PCRE-Funktionen wurde als veraltet eingestuft - damit soll verhindert werden, das Funktionen im regulären Ausdruck ausgeführt werden. Also sicherheitsbedingt.

14. Linux-Binaries haben ab 5.5 systemtap Support. Für alle die es relevant ist, wissen was damit gemeint ist ;-)

15. Am internen Speichermanagement wurde geschraubt, so dass der Speicherverbraucht damit geringer werden sollte.

16. MySQL (war schon bekannt und wird hier im Forum auch immer wieder erwähnt) ist nun entgültig als Deprecated eingestuft. Das bedeutet, verwendet es nicht mehr! Es gibt MySQLi und PDO als Alternative. Alle die es weiterhin verwenden, bekommen entweder das Log zu gemüllt oder es wunderschön auf dem Bildschirm im Browser präsentiert.

17. Apache 2.4 Support nun offiziell im Source verankert, damit ist es nicht mehr nötig, auf apachelounge zu gehen.

18. Klassennamen-Auflösung via "class" Schlüsselwort. Wer schon mit Java zu tun gehabt hat, kennt es, ansonsten hier eine kurze Erklärung. Klassen bekommen die ::class Property, welche den absoluten (also inkl. Namespaces) Klassennamenpfad als skalaren Wert zurück gibt. Hier das RFC: https://wiki.php.net/rfc/class_name_scalars

19. Socket-Fans können sich freuen, sendmsg() und recvmsg() sind nun eingebaut. Hier das RFC: https://wiki.php.net/rfc/sendrecvmsg

20. Mehrere Dutzend Bugs wurden beseitigt.

Wer alles bis zum aktuellen RC1 noch mal detailiert nachlesen möchte: https://github.com/php/php-src/blob/php-5.5.0RC1/NEWS
 
Zuletzt bearbeitet: