Weitere Bugfixes für die neue PHP-Version

PHP 7.3: Zweiter Release-Kandidat für die neue PHP-Version verfügbar
Keine Kommentare

Der zweite Release-Kandidat für PHP 7.3 ist erschienen. Auf dem Weg zum finalen Release im Dezember wurden weitere 10 Issues bearbeitet.

Am 13. Dezember soll es soweit sein: PHP 7.3 wird für die Allgemeinheit verfügbar. Wer die Entwicklung der neuen PHP-Version genauer verfolgen möchte, findet in den Milestones und Release-Kandidaten bereits die nötigen Quellen.

Aktuell stehen wir beim zweiten von fünf geplanten Release-Kandidaten für PHP 7.3. Neue Features werden hier nicht mehr umgesetzt, es geht lediglich um Bugfixes und Verfeinerungen. Dieses Mal hat das PHP-Kernteam 10 Bugs geschlossen.

Beispielsweise kommt nun statt curl_multi_select() die Anweisung curl_multi_wait() zum Einsatz, mit der sich Timeouts besser konfigurieren lassen. Im PHP Core wurde eine Inkonsistenz in foreach()-Schleifen behoben, bei denen in bestimmten Fällen die zweite Iteration über Arrays ausgelassen wurde. Außerdem wurden die regulären Ausdrücke des PCRE-Standards auf PCRE2 10.32 aktualisiert.

Die gesamten Release Notes sehen folgendermaßen aus:

 

  • CURL:
    • Fixed bug #76480 (Use curl_multi_wait() so that timeouts are respected).
  • Core:
    • Fixed bug #76869 (Incorrect bypassing protected method accessibilty check).
    • Fixed bug #76800 (foreach inconsistent if array modified during loop).
    • Fixed bug #76901 (method_exists on SPL iterator passthrough method corrupts
      memory).
  • iconv:
    • Fixed bug #66828 (iconv_mime_encode Q-encoding longer than it should be).
  • Opcache:
    • Fixed bug #76711 (OPcache enabled triggers false-positive „Illegal string
      offset“).
  • PCRE:
    • Upgrade PCRE2 to 10.32.
    • Fixed bug #76909 (preg_match difference between 7.3 and < 7.3).
  • Standard:
    • Fixed bug #75533 (array_reduce is slow when $carry is large array).
  • XMLRPC:
    • Fixed bug #76886 (Can’t build xmlrpc with expat).

Wie immer weist das Core-Team darauf hin, dass der RC 2 noch nicht für den Produktivbetrieb vorgesehen ist. Der nächste Release-Kandidat soll am 11. Oktober erscheinen:

Hier geht es zum Download des PHP 7.3 RC2.

Neu in PHP 7.3

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 =&amp; $array[1];

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

$array = [1, 2];
list($a, &amp;$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
International PHP Conference

Migrating to PHP 7

by Stefan Priebsch (thePHP.cc)

A practical introduction to Kubernetes

by Robert Lemke (Flownative GmbH)

API Summit 2018

From Bad to Good – OpenID Connect/OAuth

mit Daniel Wagner (VERBUND) und Anton Kalcik (business.software.engineering)

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 -