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 2018

Getting Started with PHPUnit

by Sebastian Bergmann (thePHP.cc)

Squash bugs with static analysis

by Dave Liddament (Lamp Bristol)

API Conference 2018

API Management – was braucht man um erfolgreich zu sein?

mit Andre Karalus und Carsten Sensler (ArtOfArc)

Web APIs mit Node.js entwickeln

mit Sebastian Springer (MaibornWolff GmbH)

Unsere Redaktion empfiehlt:

Relevante Beiträge

X
- Gib Deinen Standort ein -
- or -