Auf den schließenden Bezeichner für doc-Zeichenketten muss kein Semikolon oder Zeilenumbruch mehr folgen. Außerdem darf der schließende Bezeichner eingerückt sein; in diesem Fall wird die Einrückung aus allen Zeilen der doc-Zeichenkette entfernt.
Die Destrukturierung von Arrays unterstützt nun mithilfe der Syntax [&$a, [$b, &$c]] = $d
Referenzzuweisungen. Dies wird auch bei list() unterstützt.
Der Operator instanceof
akzeptiert nun ein Literal als ersten Operanden. In diesem Fall gibt das Ergebnis immer false
zurück.
Es wurde eine neue CompileError-Exception hinzugefügt, von der ParseError erbt. Eine kleine Anzahl von Kompilierungsfehlern löst nun eine CompileError-Exception aus, anstatt einen fatalen Fehler zu erzeugen. Derzeit betrifft dies nur Kompilierungsfehler, die von token_get_all() im Modus TOKEN_PARSE
ausgelöst werden können, aber in Zukunft könnten weitere Fehler in diese Exception konvertiert werden.
Am Ende von Funktions- und Methodenaufrufen sind nun Kommas erlaubt.
Mit der Konfigurationsoption --with-password-argon2[=dir] unterstützen die Funktionen password_hash(), password_verify(), password_get_info() und password_needs_rehash() nun Argon2i- und Argon2id-Hashes. Passwörter können gehasht und mit der Konstante PASSWORD_ARGON2ID
verifiziert werden. Um die Unterstützung für Argon2i und Argon2id in den password_*()-Funktionen nutzen zu können, muss PHP gegen die libargon2-Referenzbibliothek ≥ 20161029 gelinkt sein.
Es wurden neue Optionen zur Anpassung der FPM-Protokollierung hinzugefügt:
log_limit
log_buffering
decorate_workers_output
catch_workers_output
aktiviert ist, kann diese Pool-Option verwendet werden, um die Dekoration der Worker-Ausgabe zu deaktivieren. Die Funktion bcscale() kann nun auch als "Getter" verwendet werden, um die aktuell verwendete Genauigkeit abzurufen.
Die LDAP-Abfragefunktionen und die Funktion ldap_parse_result() unterstützen nun sämtliche Steuerelemente von LDAP:
$controls
hinzugefügt. $controls
hinzugefügt. LDAP_OPT_SERVER_CONTROLS
und LDAP_OPT_CLIENT_CONTROLS
korrigiert. Die Unterstützung für die vollständige Umwandlung und den Vergleich von Groß- und Kleinschreibung wurde hinzugefügt. Im Gegensatz zur einfachen Umwandlung der Groß-/Kleinschreibung kann die vollständige Umwandlung die Länge der Zeichenkette ändern. Zum Beispiel:
<?php
mb_strtoupper("Straße");
// Ergibt in PHP 7.2 STRAßE
// Ergibt in PHP 7.3 STRASSE
?>
MB_CASE_LOWER
(wird verwendet von mb_strtolower()) MB_CASE_UPPER
(wird verwendet von mb_strtoupper()) MB_CASE_TITLE
MB_CASE_FOLD
MB_CASE_LOWER_SIMPLE
MB_CASE_UPPER_SIMPLE
MB_CASE_TITLE_SIMPLE
MB_CASE_FOLD_SIMPLE
(wird bei Operationen verwendet, die Groß- und Kleinschreibung nicht berücksichtigen) Bei Operationen mit Zeichenketten, die die Groß-/Kleinschreibung nicht berücksichtigen, wird nun Case-Folding anstelle von Case-Mapping verwendet. Das bedeutet, dass mehr Zeichen als gleich (ohne Berücksichtigung der Groß-/Kleinschreibung) angesehen werden.
mb_convert_case() führt in Verbindung mit MB_CASE_TITLE
nun eine Title-Case-Umwandlung durch, die auf den von Cased und CaseIgnorable abgeleiteten Unicode-Eigenschaften basiert. Diese Änderung verbessert insbesondere auch die Behandlung von Anführungszeichen und Apostrophen.
Die Datentabellen für Multibyte-Zeichenketten wurden aktualisiert, um Unicode 11 zu unterstützen.
Die Funktionen für Multibyte-Zeichenketten unterstützen nun auch Zeichenketten, die größer als 2GB sind.
Die Leistung der Erweiterung Multibyte-Zeichenketten wurde in allen Bereichen erheblich verbessert. Die größten Verbesserungen betreffen die Funktionen zur Umwandlung der Groß-/Kleinschreibung.
Die mb_ereg_*
-Funktionen unterstützen nun benannte Übereinstimmungen. Funktionen, die wie mb_ereg() nach Übereinstimmungen suchen, geben nun ähnlich wie die Funktionen bei PCRE benannte Übereinstimmungen zurück, indem sie sowohl ihre Gruppennummern als auch ihre Namen verwenden:
<?php
mb_ereg('(?<word>\w+)', '国', $matches);
// => [0 => "国", 1 => "国", "word" => "国"];
?>
\k<>
und \k''
, um benannte Übereinstimmungen in der Ersetzungszeichenkette zu referenzieren: <?php
mb_ereg_replace('\s*(?<word>\w+)\s*', "_\k<word>_\k'word'_", ' foo ');
// => "_foo_foo_"
?>
\k<>
und \k''
können auch für numerische Verweise verwendet werden, was auch mit Gruppennummern funktioniert, die größer als 9 sind. Bei der Funktion readline_info() wurde die Unterstützung für die Optionen completion_append_character
und completion_suppress_append
hinzugefügt. Diese Optionen sind nur verfügbar, wenn PHP gegen libreadline (statt libedit) gelinkt ist.