Deprecación de parámetros nulos
CategoriasPHPProgramación

Deprecación de parámetros nulos

Después de un tiempo de “ausencia” por varios motivos y tener medio abandonado el blog 🙏​ hoy vuelvo con un tema sencillo por si hay por ahí algún despistado como yo, que se ha encontrado o puede que se encuentre en la misma situación. 😉

A la hora de volver a escribir código para dulceAuth resulta que me ha salido un aviso como el siguiente:

Este aviso aparece a partir de la versión 8.4 de PHP y nos indica literalmente qué “llamar a parámetros implícitamente nulos está obsoleto”.

¿Qué significa esto?

La deprecación de parámetros implícitamente nulos significa que cuando defines un parámetro con un tipo de dato obligatorio y le asignas un valor por defecto null, como en:

public function __construct(User $user = null)

El tipo User sugiere que siempre se espera una instancia de User, pero el valor por defecto null implica que también puede ser null. En PHP 8.4, esto debe expresarse explícitamente usando ?User para dejar claro que el parámetro acepta null.

En otras palabras:

public function __construct(?User $user = null)
{
    $this->userModel = $user ?: new User();
    parent::__construct();
}

Con este cambio se busca hacer que el código sea más explícito y evitar confusiones sobre los tipos esperados. Al declarar User $user = null, el código sugiere que $user siempre debe ser un objeto User, pero luego permite null, lo cual contradice la intención del tipo declarado.

¿Parece obvio no?

Así que básicamente el cambio consiste en dejar claro que el parámetro puede ser null utilizando la notación ‘?’.

Resumiendo, de esa manera estamos indicando que:

  • ?User deja claro que $user puede ser nulo.
  • = null permite que el parámetro sea opcional sin generar errores.
  • Evita la advertencia de PHP 8.4 y asegura que el código sea compatible con versiones futuras.

Una vez más, espero que este pequeñísimo articulo/minipost sirva de ayuda 😉

Sobre el autor

Comparte:

Este artículo está publicado bajo una licencia Creative Commons Atribución-CompartirIgual 4.0 Internacional . Puedes compartirlo y adaptarlo, incluso con fines comerciales, siempre que cites al autor y mantengas esta misma licencia.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información básica sobre protección de datos
Responsable Óscar Martínez +info...
Finalidad Gestionar y moderar los comentarios +info...
Legitimación Consentimiento del interesado. +info...
Destinatarios No se cederán datos a terceros, salvo obligación legal +info...
Derechos Acceder, rectificar y cancelar los datos, así como otros derechos. +info...
Información adicional Puedes consultar la información adicional y detallada sobre protección de datos en nuestra página de política de privacidad.

Este sitio esta protegido por reCAPTCHA y laPolítica de privacidady losTérminos del servicio de Googlese aplican.

El periodo de verificación de reCAPTCHA ha caducado. Por favor, recarga la página.