Tipos null, como funcionan en PHP 7.1

tipos null php 7.1

PHP ha sido considerado durante mucho tiempo un lenguaje dinámico, mas sin embargo, desde la versión 5 ha realizado cambios paulatinos por medio de los cuales ahora es posible hacer declaraciones de funciones y métodos que pueden forzar a un tipo especifico. Esto quiere decir que, si una función recibe o regresa un tipo distinto al definido previamente el analizador de PHP lanzara un error.

Ademas ya es posible declarar una función en la cual se especifique que un parámetro puede ser opcinalmente null. De la misma forma una función puede regresar como valor opcional un tipo null.

En versiones anteriores, el segundo caso requería que se omitiera el tipo que debe regresar la función, como se muestra en el ejemplo siguiente.

Si se cambia la definición para que la función regrese una cadena, el interprete de PHP lanzará una excepción de tipo TypeError cuando la condición no se cumpla.

Como funcionan los tipos null en funciones

Funciones que retornan un tipo

El primer aspecto que abarca esta nueva característica permite que un tipo pueda ser null agregando un símbolo de interrogación (?) en la definición de retorno de una función, como podemos ver en los siguientes ejemplos:

Primero, del ejemplo podemos observar que la expresión ?int nos indica que la función puede regresar null, ademas es importante destacar que si la función no regresa el tipo especificado en su definición o null, el interprete de PHP lanzará un error en tiempo de ejecución, es decir, cuando se haga una llamada a la función.

Tipo null como argumento

Es posible forzar a que los argumentos también sean de un tipo especifico o null, debes de notar que esto no afecta la definición de argumentos con valores por defecto, por lo cual la ultima declaración en el ejemplo siguiente marcara error cuando se ejecute la función sin argumentos, esto se debe a que la variable $msg no tiene un valor por defecto.

Si queremos obtener el resultado esperado con una llamada sin argumentos se requiere establecer un valor a null a la variable $msg.

 

Cómo funciona el tipo null en la herencia

Cuando una clase extiende a otra existen algunas restricciones especiales que debemos considerar, como en el caso en el que se retorna un valor null o en la definición de parámetros en un método.

Cuándo un método regresa un tipo

Si una clase extiende o hereda de otra, la clase hija puede cambiar el valor null opcional, de tal forma que el siguiente ejemplo es valido:

Es importante destacar que la clase hija no puede agregar a la definición el tipo null si no esta previamente declarado en la clase padre, esto se puede comprobar fácilmente en el siguiente fragmento de código.

El ejemplo lanzará un error fatal cuando el interprete de php analice la definición de la clase.

Cuándo un método tiene un tipo null como argumento

Las clases hijas no pueden quitar un argumento de tipo null, pero si lo pueden agregar si no esta presente en la clase padre como puede verse en los siguiente ejemplos.

 

Conclusión

Espero que esta introducción haya sido de utilidad y si quieres conocer mas sobre esta característica ademas es aconsejable que leas el rfc correspondiente.

Si tienes alguna duda o quieres agregar algo mas, deja un mensaje o te invito a seguir el tema en nuestro canal de slack.

Comparte este artículo

Entra en la discusión y deja tu comentario

  • Marco A. Feregrino

    Interesante muy teórico, creo que seria bueno que dieras ejemplos de implementaciones reales, eso le daría mucho boost a el articulo. Saludos

    • Herminio Heredia

      Muchas gracias por el comentario y procurare utilizar ejemplos mas reales en los siguientes artículos.