Todos los artículos
Strict Types en PHP

Strict Types en PHP

`strict_types=1` es más para el lector que para el escritor

blog-cover

En diciembre de 2015, PHP 7 introdujo las declaraciones de tipos escalares y la bandera strict types. ¿Qué es esto?

Lo bueno de declarar un archivo PHP como estricto es que se aplica solo al archivo actual. Asegura tipos estrictos en ese archivo, pero no afecta al resto del proyecto. Puedes migrar de código no estricto a estricto paso a paso, especialmente en archivos o proyectos nuevos.

Para habilitar el modo estricto, coloca una directiva declare al principio del archivo. La estrictez de tipado para escalares se configura por archivo. Esta directiva afecta tanto a los parámetros como al tipo de retorno de las funciones.

Strict types afecta la coerción de tipos

Usar type hints sin strict_types puede causar bugs sutiles.

Sin strict types, int $x significa “$x debe ser coercionable a int”. Cualquier valor coercionable a int pasaría:

  • un int (42 -> 42)
  • un float (13.1459 -> 13)
  • un bool (true -> 1)
  • un null (null -> 0)
  • un string con dígitos al inicio (“15 Trees” -> 15)

Con strict_types=1, le dices al motor que int $x significa que $x debe ser un int real, sin coerción. Tienes la seguridad de que recibes exactamente lo que se pasó, sin conversiones ni pérdida de datos.

¿A quién le importa esta línea?

declare(strict_types=1); es más para el lector que para el escritor. Le dice explícitamente:

  • Los tipos en este archivo se tratan de forma estricta.

‘strict_types=1’ es más para el lector que para el escritor

El escritor solo necesita mantener esa estrictez mientras escribe. Pero como escritor, deberías preocuparte por tus lectores. Eso incluye a tu yo futuro.

blog-img


Referencias

hjklmove /search yyank dtheme ilang ttoc mmark nnote ?help

Atajos de Teclado

Movimiento vim hjkl

hArtículo anterior← left
jBajar↓ down
kSubir↑ up
lArtículo siguiente→ right
ggIr arriba
GIr al final
nSiguiente secciónnext heading
NSección anteriorprevious heading

Ir a g = go

ghIniciogo home
gbBloggo blog
grLecturasgo readings
gpTemasgo topics
geServiciosgo services
gaCharlasgo talks

Acciones

/Buscarvim search
yCopiar URLvim yank
dCambiar temadark mode
tMostrar/ocultar índicetable of contents
iCambiar idiomai18n
fSeguir enlacefollow link
mAlternar resaltadomark text

General

?Mostrar ayuda
ShiftMantener para mostrar atajos
EscCerrar
:Terminalvim command mode