So wurden auch im RC4 wieder etliche Bugs gefixt. Beispielsweise erzeugten die phpize
und ./configure
Skripts überflüssige .deps
-Dateien im Extension-Verzeichnis – ein Fehler, der nun nicht mehr auftritt. In der Date-Komponente wurden Bruchzahlen bei der Nutzung von timelib_do_rel_normalize()
nicht normalisiert, was zu falschen DateInterval-
Werten führen konnte. Auch diese Ungenauigkeit ist durch die Nutzung von do_range_limit_fraction()
behoben. XML-Nutzer dürfen sich zudem über die Optionen SKIP_TAGSTART
und SKIP_WHITE
, die nun unterstützt werden.
Die Release Notes für PHP 7.3 RC4 sehen folgendermaßen aus:
- Core:
- Fixed bug #77035 (The phpize and ./configure create redundant .deps file).
- Fixed bug #77041 (buildconf should output error messages to stderr)
- Date:
- Updated timelib to 2018.01RC1 to address several bugs
- Fixed bug #75577 (DateTime::createFromFormat does not accept ‚v‘ format specifier).
- Fixed bug #75642 (Wrap around behaviour for microseconds is not working).
- Fixed bug #77007 (fractions in `diff()` are not correctly normalized).
- Mbstring
- Fixed bug #77025 (mb_strpos throws Unknown encoding or conversion error).
- Tidy
- Fixed bug #77027 (tidy::getOptDoc() not available on Windows).
- Tokenizer
- Fixed bug #76991 (Incorrect tokenization of multiple invalid flexible heredoc strings).
- XML
- Fixed bug #30875 (xml_parse_into_struct() does not resolve entities).
- Add support for getting SKIP_TAGSTART and SKIP_WHITE options.
- XMLRPC:
- Fixed bug #75282 (xmlrpc_encode_request() crashes).
Hier geht es zum Download des PHP 7.3 RC4. Der nächste Release Candidate wird laut Roadmap am 8. November fällig.
PHP 7.3 – die neuen Features
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
Frameworkless – the new black?
by Carsten Windler (KW-Commerce GmbH)
Getting started with PHP-FFI
by Thomas Bley (Bringmeister GmbH)
JSON-Schema von 0 auf 100
by Ingo Walther (Electronic Minds GmbH)
Interview mit Christian Schneider zum Thema „DevSecOps“
DevSecOps ist, bezogen auf Security-Checks, die logische Fortführung der Automatisierung im DevOps-Sinne
IT-Security Experte, Christian Schneider
Christian ist als freiberuflicher Whitehat Hacker, Trainer und Security-Coach tätig. Als Softwareentwickler mit mittlerweile 20 Jahren Erfahrung, fand er 2005 seinen Themenschwerpunkt im Bereich IT-Security.