Obsoletización de declaración implícita de parámetros ‘nuleables’ en PHP 8.4

Ayer salió la primera alpha de PHP 8.4. Todo emocionado, lo probé con el nuevo (y también en alpha) Panel de Clientes de Paperclip, y ¡Boom!

Deprecated: Google\Client::fetchAccessTokenWithAssertion(): Implicitly marking parameter $authHttp as nullable is deprecated, the explicit nullable type must be used instead in /drmad/projects/clientes/clientes/vendor/google/apiclient/src/Client.php on line 318

Decenas del mismo error de obsoletización en google/apiclient, vlucas/phpdotenv, y en (¡oh no!) vendimia/core y vendimia/database.

Según el RFC de este cambio, esta es una corrección de un hack que existió desde la versión 5.1, donde se permitía especificar un parámetro con valor por defecto null en la mitad de la lista de parámetros, como una forma de especificar que el parámetro podía ser null, ya que no existía una sintaxis para ello.

function foo(T1 $a, T2 $b = null, T3 $c) {}

En este ejemplo sacado del RFC, $b puede ser de tipo T2 o null.

Este RFC empieza a corregir ese hack, ya que ahora es posible especificar T2 | null $b o simplemente ?T2 $b. Por ahora, mostrará ese mensaje si tienes E_DEPRECATED o E_ALL en la variable error_reporting del php.ini (que realmente deberías, en especial en desarrollo). Esta inconsistencia será removida por completo en la versión 9 de PHP.

Ya reparé todos los paquetes de Vendimia. Ahora esperar a que google y vlucas hagan lo suyo.