Si un paramètre avec une valeur par défaut est suivi d'un paramètre obligatoire, la valeur par défaut n'a pas d'effet. Ceci est obsolète à partir de PHP 8.0.0 et peut généralement être résolu en supprimant la valeur par défaut du paramètre, sans changer la fonctionnalité.
<?php
function test($a = [], $b) {} // Avant
function test($a, $b) {} // Après
?>
Une exception à cette règle sont les paramètres de la forme Type $param = null
, où
la valeur par défaut null rend le type implicitement nullable. Cette utilisation reste autorisée, mais il est
recommandé d'utiliser un type explicitement nullable :
<?php
function test(A $a = null, $b) {} // Toujours autorisé
function test(?A $a, $b) {} // Recommandé
?>
Appeler get_defined_functions() avec exclude_disabled
explicitement à false
est obsolète et n'a plus d'effet.
get_defined_functions() n'inclura jamais les fonctions désactivées.
enchant_broker_set_dict_path() et enchant_broker_get_dict_path() sont obsolètes, car cette fonctionnalité n'est pas disponible dans libenchant < 1.5 ni dans libenchant-2.
enchant_dict_add_to_personal() est obsolète ; utilisez plutôt enchant_dict_add() à la place.
enchant_dict_is_in_session() est obsolète ; utilisez plutôt enchant_dict_is_added() à la place.
enchant_broker_free() et enchant_broker_free_dict() sont obsolètes ; détruissez l'objet à la place.
Les constantes ENCHANT_MYSPELL
et ENCHANT_ISPELL
sont
obsolètes.
libxml_disable_entity_loader() est maintenant obsolète. Comme libxml 2.9.0 est désormais
requis, le chargement d'entités externes est garanti d'être désactivé par défaut, et cette fonction n'est plus
nécessaire pour se protéger contre les attaques XXE, à moins d'utiliser la constante (toujours vulnérable)
LIBXML_NOENT
.
Dans ce cas, il est recommandé de refactoriser le code en utilisant
libxml_set_external_entity_loader() pour supprimer le chargement des entités externes.
La constante PGSQL_LIBPQ_VERSION_STR
a maintenant la même valeur que
PGSQL_LIBPQ_VERSION
et est donc obsolète.
Les alias de fonctions de l'extension pgsql sont obsolètes. Voir la liste suivante pour savoir quelles fonctions doivent être utilisées à la place :
Les fonctions de comparaison de tri qui retournent true
ou false
lèveront désormais un avertissement d'obsolescence, et
doivent être remplacées par une implémentation qui retourne un entier inférieur, égal ou supérieur à zéro.
<?php
// Remplacer
usort($array, fn($a, $b) => $a > $b);
// Par
usort($array, fn($a, $b) => $a <=> $b);
?>
L'utilisation d'un fichier vide en tant que ZipArchive est obsolète. Libzip 1.6.0 n'accepte plus les fichiers vides comme des archives zip valides. La solution de contournement existante sera supprimée dans la prochaine version.
L'API procédurale de Zip est obsolète. Utilisez plutôt ZipArchive. L'itération sur toutes les entrées peut être réalisée en utilisant ZipArchive::statIndex() et une boucle for:
<?php
// itère à l'aide de l'API procédurale
assert(is_resource($zip));
while ($entry = zip_read($zip)) {
echo zip_entry_name($entry);
}
// itère à l'aide de l'API orientée objet
assert($zip instanceof ZipArchive);
for ($i = 0; $entry = $zip->statIndex($i); $i++) {
echo $entry['name'];
}
?>
ReflectionFunction::isDisabled() est obsolète, car il n'est plus
possible de créer un ReflectionFunction pour une fonction désactivée. Cette méthode
retourne maintenant toujours false
.
ReflectionParameter::getClass(), ReflectionParameter::isArray(), et ReflectionParameter::isCallable() sont obsolètes. Les APIs ReflectionParameter::getType() et ReflectionType doivent être utilisées à la place.