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_limitDiese globale Option wird verwendet, um die maximale Textlänge für die Protokollierung festzulegen, sodass es möglich ist, mehr als 1024 Zeichen ohne Zeilenumbrüche zu protokollieren. Dadurch werden auch verschiedene Probleme mit Zeilenumbrüchen behoben.
log_bufferingDiese globale Option ermöglicht eine experimentelle Protokollierung ohne zusätzliche Pufferung.
decorate_workers_output
Wenn 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:
Um Steuerbefehle an den Server senden zu können, wurde den Funktionen
ldap_add(), ldap_mod_replace(),
ldap_mod_add(), ldap_mod_del(),
ldap_rename(), ldap_compare(),
ldap_delete(), ldap_modify_batch(),
ldap_search(), ldap_list() und
ldap_read() der Parameter
$controls hinzugefügt.
Um Steuerbefehle vom Server abrufen zu können wurde der Funktion
ldap_parse_result() der Parameter
$controls hinzugefügt.
In den Funktionen ldap_get_option() und
ldap_set_option() wurde die Unterstützung für
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_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.