Letzte Beta vor den Release Candidates

PHP 7.3 Beta 3 pünktlich erschienen: weitere Bugfixes
Keine Kommentare

Gemäß der Roadmap ist die dritte Beta für PHP 7.3 pünktlich erschienen. Damit ist die Beta-Phase beendet. Weiter geht es mit den Release Candidates.

Die dritte Beta zu PHP 7.3 ist da. Wie auch bei der zweiten Beta liegt der Fokus für Beta 3 auch auf dem Beheben einiger Schwachstellen und Bugs. Im Stadium der Beta-Releases spielt die Umsetzung der Features keine entscheidende Rolle mehr.

Überarbeitungen in PHP 7.3 Beta 3

Das PHP-Entwicklerteam hat für PHP 7.3 Beta 3 an 18 Stellen gebastelt:

  • Core:
    • Fixed #76773 (Traits used on the parent are ignored for child classes)
    • Fixed #76767 (‘asm’ operand has impossible constraints in zend_operators.h)
    • Fixed bug #76754 (parent private constant in extends class memory leak)
    • Fixed bug #76752 (Crash in ZEND_COALESCE_SPEC_TMP_HANDLER – assertion in _get_zval_ptr_tmp failed)
  • DOM:
    • Fixed bug #76285 (DOMDocument::formatOutput attribute sometimes ignored)
  • iconv:
    • Fixed bug #68180 (iconv_mime_decode can return extra characters in a header)
    • Fixed bug #63839 (iconv_mime_decode_headers function is skipping headers)
    • Fixed bug #60494 (iconv_mime_decode does ignore special characters)
    • Fixed bug #55146 (iconv_mime_decode_headers() skips some headers)
    • Fixed bug #53891 (iconv_mime_encode() fails to Q-encode UTF-8 string)
  • libxml:
    • Fixed bug #76777 („public id“ parameter of libxml_set_external_entity_loader callback undefined)
  • Opcache:
    • Fixed bug #76747 (Opcache treats path containing „test.pharma.tld“ as a phar file)
  • SimpleXML:
    • Fixed bug #76712 (Assignment of empty string creates extraneous text node)
  • SPL:
    • Fixed bug #68825 (Exception in DirectoryIterator::getLinkTarget())
    • Fixed bug #68175 (RegexIterator pregFlags are NULL instead of 0)
  • Standard:
    • Fixed bug #76778 (array_reduce leaks memory if callback throws exception)
    • Fixed bug #76755 (setcookie does not accept „double“ type for expire time)
    • Fixed bug #76674 (improve array_* failure messages exposing what was passed instead of an array)

In den Release Notes finden sich weitere Details zu den Fixes.

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

PHP 7.3 – so geht’s weiter

Der nächste Halt auf dem Weg zu PHP 7.3 ist der erste RC, der voraussichtlich am 13. September 2018 erscheint.

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 =& $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
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 -