Next stop to PHP 7.3

PHP 7.3 Beta 2 ist da: Das sind die Neuerungen
Keine Kommentare

Die zweite Beta-Version für PHP 7.3 ist erschienen – pünktlich wie die Feuerwehr, gemäß der geplanten Release Roadmap, die am 13. Dezember 2018 in die finale PHP-7.3-Version münden wird. RESPECT!

Naturgemäß werden im Stadium der Beta-Releases für PHP keine neuen Features mehr umgesetzt. So ging es in PHP 7.3 Beta 2 denn auch auf breiter Basis daran, Bugs zu fixen und mögliche Schwachstellen auszumerzen.

Neu in PHP 7.3 Beta 2

Im PHP Core wurde beispielsweise ein Fehler im Lexer Generator RE2C  behoben. Der Hintergrund ist hier, dass in Unix-artigen Buildsystemen die Konfigurations-Option --enable-re2c-cgoto existiert, die optimierte konditionale Sprünge via goto-extensions ermöglicht. Der durch diese Option gesetzte Flag RE2C_FLAGS -g wurde allerdings nicht von allen Lexern berücksichtigt. Im Bugfix #76030 wurde dieser Fehler nun behoben.

Ein weiterer Fix bezieht sich auf den Support für SameSite Cookies. Beim Array $option mit den Parametern setcookie(), setrawcookie() und session_set_cookie_params() war bisher das Weitergeben zusätzlicher Argumente möglich. Da dieses Verhalten nicht dem ursprünglichen RFC entspricht, wurde diese Implementierungsungenauigkeit nun entfernt.

Insgesamt hat das PHP-Entwicklerteam für PHP 7.3 Beta 2 an 13 Stellen Hand angelegt.

  • Core:
    • Fixed bug #76030 (RE2C_FLAGS rarely honoured)
  • Bz2:
    • Fixed arginfo for bzcompress.
  • DOM:
    • Reverted fix for bug #76285 (DOMDocument::formatOutput attribute sometimes ignored).
  • gettext:
    • Fixed bug #76517 (incorrect restoring of LDFLAGS).
  • intl:
    • Fixed bug #74484 (MessageFormatter::formatMessage memory corruption with
      11+ named placeholders).
  • mbstring:
    • Fixed bug #76704 (mb_detect_order return value varies based on argument
      type).
    • Fixed bug #76706 (mbstring.http_output_conv_mimetypes is ignored).
  • phpdbg:
    • Fixed bug #76595 (phpdbg man page contains outdated information).
  • Standard:
    • Fixed bug #76688 (Disallow excessive parameters after options array).
    • Fixed bug #76713 (Segmentation fault caused by property corruption).
  • Tidy:
    • Fixed arginfo for tidy::__construct().
  • zlib:
    • Fixed bug #65988 (Zlib version check fails when an include/zlib/ style dir is passed to the –with-zlib configure option).
    • Fixed bug #76709 (Minimal required zlib library is 1.2.0.4).

 

Details zu den Fixes finden sich in den Release Notes.

Lesen Sie auch: PHP lernen: Eine kompakte Einführung in die Programmiersprache

PHP 7.3 – die Neuerungen

Was die größeren Neuerungen in PHP 7.3 anbelangt, so dürfen wir für PHP 7.3 die Umsetzung von 12 RCFs erwarten:

Flexible Heredoc and Nowdoc Syntaxes: In PHP 7.3 wird die Syntax für Heredoc und Nowdoc flexibler gestaltet. So wird das Einrücken von Nowdoc/Heredoc-Endmarkierungen erlaubt sein, zudem entfällt die Notwendigkeit, einen Zeilenumbruch zu setzen.

Allow a trailing comma in function calls: Nachgestellte Kommas in Funktionsaufrufen werden eingeführt. Zum Rücksetzen von Variablen ist zum Beispiel folgende Syntax erlaubt:

unset(
    $somethingIDontNeedAnymore,
    $anotherOneToKill,
    $letsMakeThisEasy,
);

Beim Zusammensetzen von Arrays geht jetzt folgender Code:

$newArray = array_merge(
    $arrayOne,
    $arrayTwo,
    ['foo', 'bar'],
);

JSON_THROW_ON_ERROR: In PHP 7.3 wird ein neues Flag eingeführt, um die Fehlerbehandlung für JSON Extensions zu verändern. Es gibt jetzt die Option, bei Fehlern im Kontext von  json_encode und json_decode Exceptions werfen zu lassen. 

PCRE2 Migration: Der PHP Core wird auf die Nutzung des PCRE2-Standards (Perl Compatible Regular Expressions) eingestellt.

list() Reference Assignment: Eine neue Syntax für die Zuweisung von Variablen durch Referenzen in list() wird eingeführt. Statt etwa Folgendes zu schreiben:

$array = [1, 2];
$a = $array[0];
$b =& $array[1];

ist in PHP 7.3 nun die unten stehende Sequenz möglich:

$array = [1, 2];
list($a, &$b) = $array;

is_countable function: Die neue Typenfunktion is_countable() gibt true zurück, wenn der übergebene Wert ein array-Typ oder eine Instanz des Countable-Interface ist.

array_key_first(), array_key_last(): Zwei neue Funktionen werden eingeführt, um die ersten und letzten Keys in Arrays zu ermitteln.

Make compact function reports undefined passed variables: Ein Hinweis wird ausgegeben, wenn eine nicht definierte Variable an die Funktion compact() übergeben wird. Beispiel:

$foo = 'bar';
 
$baz = compact('foz'); // Notice: compact(): Undefined variable: foz

Argon2 Password Hash Enhancements: Der Argon2i Hashing-Algorithmus soll durch Argon2id ersetzt werden.

Deprecate and Remove image2wbmp(): Die Funktion image2wbmp() wird als veraltet eingestuft und soll durch das neuere imagewbmp ersetzt werden.

Deprecate and Remove Case-Insensitive Constants: Die Unterstützung Case-insensitiver Konstanten wird als veraltet eingestuft und soll in der nächsten Major-Version entfernt werden. Beispiel:

define('FOO', 42, true); // Deprecated: define(): Declaration of case-insensitive constants is deprecated
var_dump(FOO); // Ok!
var_dump(foo); // Deprecated: Case-insensitive constants are deprecated. The correct casing for this constant is "FOO"

Deprecations for PHP 7.3: Die folgenden kleineren Sprachkonstrukte werden als veraltet eingestuft:

  • Undokumentierte mbstring Funktions-Aliases
  • String-Search-Funktionen mit integer needle
  • fgetss() Funktion und string.strip_tags Filter
  • Definition freistehender assert() Funktionen
  • FILTER_FLAG_SCHEME_REQUIRED und FILTER_FLAG_HOST_REQUIRED Flags
  • Die php.ini Direktive pdo_odbc.db2_instance_name

PHP 7.3 – so geht’s weiter

Der nächste Stop auf dem Weg zu PHP 7.3 ist nun die dritte Beta, die am 30. August fällig wird.

International PHP Conference

Migrating to PHP 7

by Stefan Priebsch (thePHP.cc)

A practical introduction to Kubernetes

by Robert Lemke (Flownative GmbH)

Unsere Redaktion empfiehlt:

Relevante Beiträge

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu:
X
- Gib Deinen Standort ein -
- or -