Wenn nach einem Parameter mit einem Standardwert ein benötigter folgt, hat der Standardwert keinen Effekt. Mit PHP 8.0.0 ist das veraltet und kann durch das Entfernen des Standardwertes behoben werden, ohne dass Funktionalität verloren geht:
<?php
function test($a = [], $b) {} // Vorher
function test($a, $b) {} // Danach
?>
Eine Ausnahme der Regel stellen Parameter dar, welche der Form Typ $param = null
entsprechen, bei welcher die Vorgabe null den Typ implizit nullbar macht. Diese Funktionalität bleibt erhalten, es wird jedoch empfohlen, den Typ explizit nullbar zu machen:
<?php
function test(A $a = null, $b) {} // Noch erlaubt
function test(?A $a, $b) {} // Empfohlen
?>
Das Aufrufen von get_defined_functions() mit exclude_disabled
explizit auf false
gesetzt, ist veraltet und hat keine Wirkung mehr. get_defined_functions() erlaubt keine deaktivierten Funktionen mehr.
enchant_broker_set_dict_path() und enchant_broker_get_dict_path() sind veraltet, da diese Funktionalität in libenchant < 1.5 und libenchant-2 nicht mehr vorhanden ist.
enchant_dict_add_to_personal() ist veraltet. enchant_dict_add() ersetzt diese Funktion.
enchant_dict_is_in_session() ist veraltet. enchant_dict_is_added() ersetzt diese Funktion.
enchant_broker_free() und enchant_broker_free_dict() sind ebenfalls veraltet. Das Objekt kann stattdessen mit unset() gelöscht werden.
Die Konstanten ENCHANT_MYSPELL
und ENCHANT_ISPELL
sind veraltet.
libxml_disable_entity_loader() ist veraltet. Da nun jedoch libxml 2.9.0 vorausgesetzt wird, ist das externe Laden von Entitäten garantiert standardmäßig deaktiviert, und diese Funktion wird nicht mehr benötigt, um vor XXE-Angriffen zu schützen, es sei denn, das (immer noch angreifbare) LIBXML_NOENT
wird verwendet. In diesem Fall ist es empfehlenswert, den Code unter Verwendung von libxml_set_external_entity_loader() zu überarbeiten, um das Laden externer Entitäten zu unterdrücken.
Die Konstante PGSQL_LIBPQ_VERSION_STR
nimmt nun den selben Wert an wie PGSQL_LIBPQ_VERSION
und ist daher veraltet.
Die Funktions-Aliase in der pgsql-Erweiterung sind veraltet. Die folgende Liste zeigt, welche Funktionen stattdessen verwendet werden sollen.
Sortierend vergleichende Funktionen welche true
oder false
zurückgeben, werden nun eine deprecation-Warnung zurückgeben und sollten durch eine Implementation ersetzt werden, welche einen Integer zurückgibt, der kleiner, gleich oder größer als 0 ist.
<?php
// Replace
usort($array, fn($a, $b) => $a > $b);
// With
usort($array, fn($a, $b) => $a <=> $b);
?>
Die Verwendung einer leeren Datei als ZipArchive ist veraltet. Libzip 1.6.0 akzeptiert keine leeren Dateien als ZIP-Archive mehr. Der existierende Workaround wird in der nächsten Version entfernt.
Die prozedurale API von Zip ist veraltet. Als Ersatz kann ZipArchive genutzt werden. Die Iteration über alle Entitäten kann durch den Einsatz von ZipArchive::statIndex() und einer for-Schleife erreicht werden:
<?php
// Iteration mit der prozedualen API
assert(is_resource($zip));
while ($entry = zip_read($zip)) {
echo zip_entry_name($entry);
}
// Iteration mit der Objekorientierten API
assert($zip instanceof ZipArchive);
for ($i = 0; $entry = $zip->statIndex($i); $i++) {
echo $entry['name'];
}
?>
ReflectionFunction::isDisabled() ist veraltet, da es nicht mehr möglich ist, eine ReflectionFunction für eine deaktivierte Funktion zu erstellen. Die Methode gibt nun immer false
zurück.
ReflectionParameter::getClass(), ReflectionParameter::isArray(), und ReflectionParameter::isCallable() sind veraltet. ReflectionParameter::getType() und die ReflectionType-APIs sollten stattdessen genutzt werden.