Tipos estrictos en PHP
declare(strict_types=1);
En diciembre de 2015, PHP 7 introdujo declaraciones de tipos escalares y con ellas el indicador de tipos estrictos en PHP.
Para habilitar el modo estricto, se debe colocar una única directiva declare en la parte superior del archivo. Esto significa que la rigurosidad de la escritura para escalares se configura por archivo. Esta directiva no solo afecta las declaraciones de tipo de los parámetros, sino también el tipo de retorno de una función.
Lo bueno de declarar un archivo PHP como estricto es que en realidad se aplica SOLO al archivo actual. Garantiza que este archivo tenga tipos estrictos, pero no se aplica a ningún otro archivo en todo el proyecto. Le permite hacer, paso a paso, esta migración de código no estricto a código estricto, especialmente para nuevos archivos o proyectos.
Los tipos estrictos en PHP afectan los tipos de coerción
El uso de tipos de sugerencias sin strict_types
puede provocar errores sutiles.
Antes de los tipos estrictos en PHP, int $x
significaba que $x must have a value coercible to an int
. Cualquier valor que pudiera ser forzado a un int
pasaría el tipo de sugerencia, que incluye:
- un
int
adecuado (ejemplo: 42 -> 42) - un
float
(ejemplo: 13.1459 -> 13) - un
bool
(ejemplo:true
-> 1) - un
null
(ejemplo:null
-> 0) - una
string
con dígitos iniciales (ejemplo: “15 árboles” -> 15)
Al establecer strict_types=1
, le dice al motor que int $x
significa que $x must only be an int proper, no type coercion allowed
. Tiene la gran seguridad de que está recibiendo exactamente y solo lo que se le dio, sin ninguna conversión o pérdida potencial.
¿A quién debería importarle esta línea de “tipo estricto”?
En realidad, declare(strict_types=1);
es más para el lector que para el escritor. ¿Por qué? Porque le dirá explícitamente al lector:
- Los tipos en este ámbito actual (archivo / clase) se tratan estrictamente.
'strict_types=1'
es más para el lector que para el escritor
El escritor solo necesita mantener tal rigor al escribir el comportamiento esperado. Dicho esto, como escritor, debes preocuparte por tus lectores, lo que también incluye tu yo futuro. Porque vas a ser uno de ellos.
Referencias