Dino Geek, try to help you

What is strict typing in PHP?


Strict typing in PHP se refiere a una característica del lenguaje mediante la cual se puede especificar que los tipos de datos de los valores deben coincidir exactamente con el tipo definido en las declaraciones de funciones, métodos o propiedades. Esto contrasta con la tipificación débil, donde PHP automáticamente intenta convertir los valores a los tipos necesarios, si es posible.

  1. Introducción a la Tipificación Estricta en PHP

PHP, por defecto, es un lenguaje de tipificación débil, lo que significa que intenta convertir los valores automáticamente al tipo necesario dado el contexto. Sin embargo, con la introducción de la declaración `declare(strict_types=1);` en PHP 7, los desarrolladores tienen la opción de habilitar la tipificación estricta para archivos específicos. Esto significa que si una variable es definida como un entero `int`, se debe pasar exactamente un entero a esa declaración; de lo contrario, se lanzará un error de tipo.

  1. ¿Cómo se Activa la Tipificación Estricta?

Para activar la tipificación estricta en un archivo PHP, se coloca la directiva `declare(strict_types=1);` al comienzo del archivo antes de cualquier código PHP:

```
declare(strict_types=1);

function add(int $a, int $b): int { return $a + $b;
}

echo add(1, 2); // Salida: 3
echo add(‘1’, ‘2’); // Error de tipo: Se espera int, se proporciona string
?>
```

  1. Ejemplos Detallados

  1. Ejemplo sin Tipificación Estricta

Sin la declaración `declare(strict_types=1);`, PHP intentará convertir los valores de forma automática:

```
function multiply($a, $b) { return $a * $b;
}

echo multiply(2, ‘3’); // Salida: 6
echo multiply(‘4’, ‘5’); // Salida: 20
```

En la ausencia de `strict_types`, las cadenas ‘3’ y ‘5’ son automáticamente convertidas a enteros, y las operaciones matemáticas se realizan con éxito.

  1. Ejemplo con Tipificación Estricta

Cuando se usa la declaración `declare(strict_types=1);`, se requiere que los tipos de datos pasados coincidan estrictamente con los tipos especificados:

```
declare(strict_types=1);

function multiply(int $a, int $b): int { return $a * $b;
}

echo multiply(2, 3); // Salida: 6
//echo multiply(‘4’, ‘5’); // Error fatal: Argumento 1 pasado a multiply() debe ser de tipo entero

?>
```

Aquí, si se comentara el `echo multiply(‘4’, ‘5’);`, se lanzaría un error fatal debido a que ‘4’ y ‘5’ son cadenas y no coinciden con el tipo `int` declarado en la función.

  1. Importancia en el Desarrollo

La tipificación estricta puede ser muy útil para:

1. Evitar Errores de Lógica Indetectables: Problemas que podrían no manifestarse hasta que los datos de entrada erróneos se usen en la producción.
2. Mejorar la Legibilidad del Código: Deja claro cuáles son los tipos de datos esperados, lo que hace que el código sea más fácil de entender y mantener.
3. Facilitar el Mantenimiento de Codigo: Al especificar tipos explícitamente, otros desarrolladores (o el mismo desarrollador en el futuro) tendrán una comprensión más clara de cómo se debe usar una función o método.

  1. Fuentes Utilizadas

- [PHP: Manual de PHP sobre Tipos y Pseudo-tipos – Manual](https://www.php.net/manual/es/functions.arguments.php#functions.arguments.type-declaration)
- [PHP: Tipificación Estricta – PHP: The Right Way](https://www.phptherightway.com/)
- [Introducción a la Tipificación Estricta en PHP 7 – SitePoint](https://www.sitepoint.com/php-7-strict-typing-declarations/)

Estas fuentes proporcionan una guía comprensiva y detallada sobre la implementación y los beneficios de la tipificación estricta en PHP, asegurando un desarrollo robusto y menos propenso a errores.


Simply generate articles to optimize your SEO
Simply generate articles to optimize your SEO





DinoGeek offers simple articles on complex technologies

Would you like to be quoted in this article? It's very simple, contact us at dino@eiki.fr

CSS | NodeJS | DNS | DMARC | MAPI | NNTP | htaccess | PHP | HTTPS | Drupal | WEB3 | LLM | Wordpress | TLD | Domain name | IMAP | TCP | NFT | MariaDB | FTP | Zigbee | NMAP | SNMP | SEO | E-Mail | LXC | HTTP | MangoDB | SFTP | RAG | SSH | HTML | ChatGPT API | OSPF | JavaScript | Docker | OpenVZ | ChatGPT | VPS | ZIMBRA | SPF | UDP | Joomla | IPV6 | BGP | Django | Reactjs | DKIM | VMWare | RSYNC | Python | TFTP | Webdav | FAAS | Apache | IPV4 | LDAP | POP3 | SMTP

| Whispers of love (API) | Déclaration d'Amour |






Legal Notice / General Conditions of Use