Veraltete Features in PHP 7.2.x
Zeichenketten ohne Anführungszeichen
Eine Zeichenkette, die nicht in Anführungszeichen steht, wird nur dann als
Zeichenkette behandelt, wenn es keine globale Konstante mit diesem Namen
gibt. Dieser Fall erzeugte bisher einen Fehler der Stufe
E_NOTICE
und erzeugt nun stattdessen einen Fehler der
Stufe E_WARNING
. In der nächsten PHP-Hauptversion wird
dann eine Error-Exception ausgelöst.
Bei der Erweiterung GD sind die Funktionen png2wbmp()
und jpeg2wbmp() nun veraltet und werden in der nächsten
PHP-Hauptversion entfernt.
Die Variante INTL_IDNA_VARIANT_2003
In der Erweiterung Intl ist die Variante
INTL_IDNA_VARIANT_2003
veraltet. Sie wird derzeit als
Standardwert für die Funktionen idn_to_ascii() und
idn_to_utf8() verwendet. In PHP 7.4 wird dieser
Standardwert in INTL_IDNA_VARIANT_UTS46
geändert und
in der nächsten Hauptversion von PHP wird
INTL_IDNA_VARIANT_2003
komplett entfernt.
Die Methode __autoload() ist veraltet, weil sie der
Funktion spl_autoload_register() unterlegen ist (sie ist
nicht in der Lage, Autoloader zu verketten) und es keinerlei
Interoperabilität zwischen den beiden Autoload-Verfahren gibt.
Die INI-Einstellung track_errors
und die Variable $php_errormsg
Wenn die INI-Einstellung track_errors
aktiviert ist,
wird bei einem nicht-fatalen Fehler die Variable
$php_errormsg
im lokalen Bereich erstellt. Da solche
Fehlerinformationen üblicherweise mit der Funktion
error_get_last() abgefragt werden, ist diese
Funktionalität nun veraltet.
In Anbetracht der Sicherheitsprobleme dieser Funktion (sie ist ein
schlanker Wrapper um eval()) ist diese Funktion nun
veraltet. Stattdessen sollten
anonyme Funktionen verwendet
werden.
Die INI-Einstellung mbstring.func_overload
Da es in Umgebungen, in denen diese Einstellung aktiviert ist, Probleme bei
der Interoperabilität mit zeichenkettenbasierten Funktionen gibt, ist sie
nun veraltet.
Typumwandlung mit (unset)
Wird ein Ausdruck in diesen Typ umgewandelt, so ergibt dies immer null
,
weshalb diese überflüssige Typumwandlung nun veraltet ist.
parse_str() ohne zweiten Parameter
Wird die Funktion parse_str() ohne den zweiten Parameter
verwendet, dann werden die Parameter aus der Abfragezeichenkette in der
lokalen Symboltabelle abgelegt. In Anbetracht der damit verbundenen
Sicherheitsrisiken ist die Verwendung von parse_str()
ohne den zweiten Parameter nun veraltet. Die Funktion sollte immer mit zwei
Parametern verwendet werden, da der zweite Parameter bewirkt, dass die
Abfragezeichenkette in ein Array überführt wird.
Diese Funktion generiert eine Zufallszahl basierend auf einem Bereich, der
durch eine nicht näher spezifizierte, plattformspezifische Länge der
einzelnen Elemente berechnet wird. Aus diesem Grund ist die Funktion nun
veraltet. Um eine Zustallszahl unter Verwendung der Erweiterung GMP zu
erzeugen, sollten stattdessen die Funktionen
gmp_random_bits() und
gmp_random_range() verwendet werden.
Die Funktion each()
Diese Funktion ist bei einer Iteration viel langsamer als ein gewöhnliches
foreach
und führt bei manchen Änderungen an PHP selbst
zu Implementierungsproblemen, weshalb diese Funktion für veraltet erklärt
wurde.
Übergabe einer Zeichenkette an assert()
Wenn assert() mit einer Zeichenkette als Parameter
verwendet wird, muss die Zeichenkette mittels eval()
ausgewertet werden. Angesichts des Potenzials für die
Remote-Code-Ausführung ist die Übergabe einer Zeichenkette an
assert() nun zugunsten der Verwendung boolescher
Ausdrücke veraltet.
Der Parameter $errcontext
bei Fehlerbehandlungen
Der Parameter $errcontext
enthält alle lokalen Variablen
der Stelle, an der der Fehler auftrat. Weil er nur selten verwendet wird
und Probleme mit internen Optimierungen verursacht, ist es nun veraltet. Um
Informationen über lokale Variablen am Ort des Fehlers abzurufen, sollte
stattdessen ein Debugger verwendet werden,