Deprecated: Required parameter $xxx follows optional parameter $yyy in...Desde que se actualizó a PHP 8.0, este error aparece cuando se ejecuta un código como este:
function test_function(int $var1 = 2, int $var2) { return $var1 / $var2; }Esto ha funcionado en versiones anteriores de PHP sin problemas.
Este estilo de declaración de función ha quedado obsoleto en PHP 8.0 . Escribir funciones como esta nunca ha tenido sentido , ya que todos los parámetros (hasta el último requerido) deben especificarse cuando se llama a la función. También causó confusión con el uso de la clase ReflectionFunctionAbstract para analizar funciones y métodos.
La nueva obsolescencia simplemente garantiza que las firmas de funciones sigan la suposición de sentido común de que los parámetros obligatorios, que deben aparecer, siempre deben declararse antes que los opcionales.
La función debe reescribirse para eliminar el valor predeterminado en los parámetros anteriores. Dado que nunca se puede llamar a la función sin declarar todos los parámetros, esto no debería afectar su funcionalidad.
function test_function(int $var1, int $var2) { return $var1 / $var2; }El parámetro requerido sin un valor predeterminado debe aparecer primero.
function test_function(int $xxx, int $yyy = 2) { return $xxx * $yyy; }