Qual sistema de tipos é aplicado no PHP?
sobes.tech IA
Resposta da IA
O PHP utiliza um sistema de tipos dinâmico e fraco.
-
Tipagem dinâmica: O tipo de uma variável é determinado em tempo de execução durante a atribuição de um valor, não na declaração. A variável pode conter valores de diferentes tipos ao longo do seu ciclo de vida.
<?php $variable = 10; // inteiro echo gettype($variable) . "\n"; $variable = "olá"; // string echo gettype($variable) . "\n"; ?> -
Tipagem fraca (não estrita): PHP converte automaticamente os tipos de dados quando necessário, por exemplo, em operações aritméticas ou comparações. Isto pode levar a resultados inesperados se os tipos não forem controlados explicitamente.
<?php echo "10" + 5; // Saída: 15 (a string "10" é convertida em número) echo "\n"; if ("5" == 5) { // Comparação de "5" e 5 com conversão automática de tipos echo "Igual"; // Saída: Igual } ?>
No entanto, a partir do PHP 7, foi introduzida a possibilidade de usar:
-
Declarações de tipos escalares: Permitem indicar o tipo esperado de argumentos de funções, valores de retorno e propriedades de classes (PHP 7.4+).
<?php declare(strict_types=1); // Modo estrito de tipos para o ficheiro atual function addNumbers(int $a, int $b): int { return $a + $b; } // addNumbers("1", 2); // Isto provocará um TypeError em modo estrito echo addNumbers(1, 2); ?> -
Declarações de tipos de retorno: Indicam o tipo de dado que uma função deve devolver.
-
Declarações de tipos de propriedade: Indicam o tipo de dado que uma propriedade de classe pode conter.
-
Declarações de tipos combinados: Permitem indicar que uma variável, argumento, propriedade ou valor de retorno pode ter um de vários tipos (PHP 8+).
-
Declarações de tipos intersectados: Permitem indicar que uma variável, argumento, propriedade ou valor de retorno deve ser uma instância de todas as interfaces ou classes indicadas (PHP 8.1+).
-
Tipo
mixed: Indica que um elemento pode ser de qualquer tipo (PHP 8+). -
Tipo
never: Indica que uma função ou método nunca devolve valor (ou seja, termina a execução do script ou lança uma exceção) (PHP 8.1+).
A utilização destas funcionalidades permite aproximar o PHP de uma tipagem estrita, melhorando a legibilidade do código e facilitando a depuração. A declaração declare(strict_types=1); no início do ficheiro ativa o modo estrito de tipos para tipos escalares, onde não ocorre conversão automática de tipos ao chamar funções e métodos.