Si un parámetro con un valor predeterminado es seguido por un parámetro obligatorio, el valor predeterminado no tiene efecto. Esto está obsoleto a partir de PHP 8.0.0 y generalmente puede resolverse eliminando el valor predeterminado, sin cambiar la funcionalidad:
<?php
function test($a = [], $b) {} // Before
function test($a, $b) {} // After
?>
Una excepción a esta regla son los parámetros de la forma Type $param = null, donde
el valor predeterminado null hace que el tipo sea implícitamente nullable. Este uso sigue estando permitido, pero se
recomienda usar un tipo nullable explícito en su lugar:
<?php
function test(A $a = null, $b) {} // Still allowed
function test(?A $a, $b) {} // Recommended
?>
Llamar a get_defined_functions() con exclude_disabled
establecido explícitamente a false está obsoleto y ya no tiene efecto.
get_defined_functions() nunca incluirá funciones deshabilitadas.
enchant_broker_set_dict_path() y enchant_broker_get_dict_path() están obsoletas, porque esa funcionalidad no está disponible ni en libenchant < 1.5 ni en libenchant-2.
enchant_dict_add_to_personal() está obsoleta; use enchant_dict_add() en su lugar.
enchant_dict_is_in_session() está obsoleta; use enchant_dict_is_added() en su lugar.
enchant_broker_free() y enchant_broker_free_dict() están obsoletas; use unset sobre el objeto en su lugar.
Las constantes ENCHANT_MYSPELL y ENCHANT_ISPELL están
obsoletas.
libxml_disable_entity_loader() ha sido desaprobada. Como ahora se requiere libxml 2.9.0,
la carga de entidades externas está garantizada como deshabilitada por defecto, y esta función ya
no es necesaria para proteger contra ataques XXE, a menos que se utilice
LIBXML_NOENT.
En ese caso, se recomienda refactorizar el código usando
libxml_set_external_entity_loader() para suprimir la carga de entidades externas.
La constante PGSQL_LIBPQ_VERSION_STR ahora tiene el mismo valor que
PGSQL_LIBPQ_VERSION, y por lo tanto está obsoleta.
Los alias de funciones en la extensión pgsql han sido desaprobados. Consulte la siguiente lista para saber qué funciones deben usarse en su lugar:
Las funciones de comparación para ordenamiento que devuelven true o false ahora emitirán una advertencia de obsolescencia, y
deberían ser reemplazadas por una implementación que devuelva un entero menor, igual o mayor
que cero.
<?php
// Replace
usort($array, fn($a, $b) => $a > $b);
// With
usort($array, fn($a, $b) => $a <=> $b);
?>El uso de un archivo vacío como ZipArchive está obsoleto. Libzip 1.6.0 ya no acepta archivos vacíos como archivos zip válidos. La solución alternativa existente será eliminada en la próxima versión.
La API procedural de Zip está obsoleta. Use ZipArchive en su lugar. La iteración sobre todas las entradas puede realizarse usando ZipArchive::statIndex() y un bucle for:
<?php
// iterate using the procedural API
assert(is_resource($zip));
while ($entry = zip_read($zip)) {
echo zip_entry_name($entry);
}
// iterate using the object-oriented API
assert($zip instanceof ZipArchive);
for ($i = 0; $entry = $zip->statIndex($i); $i++) {
echo $entry['name'];
}
?>
ReflectionFunction::isDisabled() está obsoleto, ya que ya no es posible
crear un ReflectionFunction para una función deshabilitada. Este
método ahora siempre devuelve false.
ReflectionParameter::getClass(), ReflectionParameter::isArray() y ReflectionParameter::isCallable() están obsoletos. En su lugar deberían usarse ReflectionParameter::getType() y las API de ReflectionType.