| 

.NET C# Java Javascript Exception

7
Vor ziemlich genau einer Stunde ist PHP 5.6 final erschienen, und es ist Zeit sich die neuen Features und Vorteile anzuschauen. Aus meiner Sicht lohnt ein Upgrade, allein schon wegen der geschenkten 10% Performance gegenüber PHP 5.5. Die neue Version kann auf der Downloads-Seite von php.net heruntergeladen werden. Die neuen Features sind die folgenden: Konstante […]
Keine ähnlichen Artikel.

Vor ziemlich genau einer Stunde ist PHP 5.6 final erschienen, und es ist Zeit sich die neuen Features und Vorteile anzuschauen. Aus meiner Sicht lohnt ein Upgrade, allein schon wegen der geschenkten 10% Performance gegenüber PHP 5.5.

Die neue Version kann auf der Downloads-Seite von php.net heruntergeladen werden. Die neuen Features sind die folgenden:

  1. Konstante skalare Ausdrücke (Constant scalar expressions): Bisher durften Konstanten nur “statische Werte” enthalten, also zum Beispiel  1  oder “ein string”. Nun dürfen dort auch einfache Berechnungen gemacht werden. Hier ein paar Beispiele:
    <?php
    const ONE = 1;
    const TWO = ONE * 2;
    
    class C {
     const THREE = TWO + 1;
     const ONE_THIRD = ONE / self::THREE;
     const SENTENCE = 'The value of THREE is '.self::THREE;
    
     public function f($a = ONE + self::THREE) {
     return $a;
     }
    }
  2. Variadische Funktionen (Variadic functions): Wenn eine Funktion eine variable Anzahl an Parametern erhalten soll, musste man sich bisher mit der Funktion func_get_args() behelfen. Nun geht das ein wenig eleganter:
    <?php
    function f($req, $opt = null, ...$params) {
     // $params is an array containing the remaining arguments.
     printf('$req: %d; $opt: %d; number of params: %d'."\n",
     $req, $opt, count($params));
    }
    
    f(1);
    f(1, 2);
    f(1, 2, 3);
    f(1, 2, 3, 4);
    f(1, 2, 3, 4, 5);
  3. Argument unpacking (der “splat”-Operator): Bei einem Funktionsaufruf ein Array entpacken:
    <?php
    function add($a, $b, $c) {
     return $a + $b + $c;
    }
    
    $operators = [2, 3];
    echo add(1, ...$operators);
  4. Potenzierung mittels ** Operator:
    <?php
    $i = 2 ** 3; // Ergebnis: 8
    $a = 3;
    $a **= 3; // Ergebnis: 27
  5. Funktionen und Konstanzen in einen Namespace importieren: Bisher konnte man nur andere Klassen importieren, nun geht das auch mit Funktionen und Konstanten:
    <?
    namespace {
     use const Name\Space\FOO;
     use function Name\Space\f;
    }
  6. Der interaktive Debugger phpdbg ist nun Teil von PHP. Damit kann man nun auf Terminalebene ein Script debuggen, Breakpoints setzen, Zeile für Zeile das Script laufen lassen, sich die Opcodes anschauen, und das ganze ohne großen Performanceverlust. Details sind in der Doku von phpdbg zu finden.
  7. Funktionen, die Encoding-spezifisch sind wie beispielsweise htmlspecialchars(), nutzen nun die php.ini-Einstellung default_charset als Standard. Dieser ist normalerweise auf UTF-8 gesetzt, sodass das lastige Angeben des $encoding-Parameters entfällt (denn meistens arbeitet man ja heutzutage mit UTF-8).
  8. Dateien, die größer als 2 GB sind, können nun hochgeladen werden!
  9. Es gab diverse Verbesserungen beim SSL/TLS Support, zum Beispiel ist die “Peer Verification” nun standardmäßig aktiv, d.h. die Gegenstelle muss ein gültiges SSL-Zertifikat vorweisen können wenn https:// genutzt wird. Bisher war diese Einstellung deaktiviert, was unsicherer war, denn es wurden auch abgelaufene Zertifikate oder Zertifikate für eine falsche Domain angenommen.
    Man kann nun detaillierte Einstellungen der verschlüsselten Verbindung einstellen und auch abfragen, insgesamt ein paar sehr wichtige Änderungen meiner Meinung nach.
  10. Wer PostgreSQL als Datenbank nutzt wird sich freuen über die neuen asynchronen Verbindungen und SQL-Abfragen.
  11. Bei der Erstellung von Zip-Archiven kann nun ein Passwort festgelegt werden: ZipArchive::setPassword()

Die wichtigsten Änderungen, die bestehenden Code betreffen und durch die es zu Fehlern kommen kann (backwards incompatible changes), sind folgende:

  1. json_decode() nimmt nun nur noch die klein geschriebenen Werte true, false und null an. Wer also versucht mit der Funktion JSON zu decodieren in dem TRUE, True, FALSE, False, NULL oder Null vorkommt, wird einen Fehler bekommen, und der String wird nicht korrekt dekodiert werden. Der Standard erlaubt nur die klein geschriebenen Varianten, und PHP hält sich nun strikt dran. Man sollte also vorher seine JSON-Strings überprüfen die man von irgendwo bekommt.
  2. Die oben in Punkt 9 erwähnte “Peer Verification” könnte verschlüsselte Verbindungen nicht zustande kommen lassen, die bisher funktionierten. Durch die nun aktivierte Prüfung werden ungültige, sprich abgelaufene, selbst signierte oder nicht zur Domain passende Zertifikate, abgelehnt. Man muss in solchen Fällen, wenn man sich sicher ist dass man diese ungültigen Zertifikate erlauben will, die “verify_peer” und “verify_peer_name” context option auf false setzen.
  3. Soll eine Datei mittels curl hochgeladen werden, konnte bisher einfach eine der Variablen auf @Dateipfad gesetzt werden, dies bewirkte einen Dateiupload. Da dies unsicher ist wurde diese Funktionalität nun standardmäßig deaktiviert.

Ein schönes kurzes Video von Laracasts auf Englisch zeigt einige der neuen Features.

Weitere wichtige Quellen, um sich die Details der neuen Version anzuschauen, sind das CHANGELOG und die Migrationsseite von 5.5 auf 5.6,

Nach wie vor gibt es die Diskussion ob es PHP 5.7 geben wird, oder ob die nächste Version PHP 7 sein wird. Einige sprechen sich für die kleine Zwischenversion 5.7 aus, um Vorbereitungen für PHP 7 zu treffen, einie Features als “deprecated” markieren zu können, und den Übergang zur neuen großen Version leichter zu machen. Andere halten nichts von der Idee und würden eine volle Konzentration auf PHP 7 bevorzugen. Mal sehen wie sich da entschieden wird.

5.3 hat vor kurzem sein End-of-Life gehabt, 5.4 erhält ab jetzt nur noch wichtige Sicherheitsupdates.

Ein Upgrade auf 5.6 ist meiner Ansicht nach zu empfehlen, gerade weil es kaum Probleme gibt wenn man die 3 Punkte oben beachtet, und man 10% Performance geschenkt bekommt. Außerdem wird der Überganz zu PHP 7 durch jede Zwischenversion einfacher, da in kleineren Schritten vorgegangen werden kann. In Testsystemen oder in unkritischen Projekten sollte 5.6 zeitig ausprobiert werden, sodass die Produktionssysteme spätestens in 1-2 Monaten, wenn 5.6.1 erschienen ist, von der neuen Version profitieren können.



Keine ähnlichen Artikel.

php release neue-version php-5.6
Schreibe einen Kommentar:
Themen:
php-5.6 neue-version release php
Entweder einloggen... ...oder ohne Wartezeit registrieren
Benutzername
Passwort
Passwort wiederholen
E-Mail