Junior
Como funciona a tipagem dinâmica em PHP?
sobes.tech IA
Resposta da IA
O PHP é uma linguagem com tipagem dinâmica e fraca.
- Tipagem dinâmica: O tipo de uma variável é determinado em tempo de execução com base no valor atribuído a ela, e não declarado explicitamente com antecedência.
- Tipagem fraca: O PHP pode realizar conversões de tipos implícitas (conversão contextual), o que às vezes pode levar a comportamentos inesperados ao comparar ou realizar operações entre valores de tipos diferentes.
Exemplos:
- Alteração do tipo de variável:
<?php $variable = 123; // int $variable = "olá"; // string $variable = [1, 2]; // array ?> - Conversão implícita de tipos na comparação:
<?php var_dump(10 == "10"); // bool(true) - a string "10" é convertida para o número 10 var_dump(0 == false); // bool(true) - false é convertido para o número 0 var_dump("abc" == 0); // bool(true) - a string "abc" é convertida para o número 0, pois não começa com um número ?> - Uso de comparação estrita para evitar conversão implícita:
<?php var_dump(10 === "10"); // bool(false) - comparado tanto em valor quanto em tipo var_dump(0 === false); // bool(false) var_dump("abc" === 0); // bool(false) ?>
Embora a tipagem dinâmica ofereça flexibilidade e acelere o desenvolvimento nas fases iniciais, ela pode levar a erros que só são detectados em tempo de execução. Para melhorar a confiabilidade do código, no PHP 7+ foram introduzidas declarações de tipos (type declarations) e modo estrito de tipos (strict types).
<?php
declare(strict_types=1); // Ativa o modo estrito de tipos para o arquivo atual
function sum(int $a, int $b): int { // Declaração de tipos para argumentos e valor de retorno
return $a + $b;
}
// sum(1, "2"); // Isto causará um erro de tipo (TypeError) em modo estrito
?>
As declarações de tipos e o modo estrito permitem realizar verificações de tipos na fase de análise estática ou em tempo de execução antes de chamar a função, o que contribui para escrever um código mais previsível e de fácil manutenção.