Resumo : neste tutorial, você aprenderá como habilitar a digitação estrita usando a diretiva strict_types do PHP.
Introdução à digitação estrita do PHP
As dicas de tipo permitem declarar tipos para parâmetros de função e valores de retorno. Por exemplo:
<?php
function add(int $x, int $y)
{
return $x + $y;
}
echo add(1.5, 2.5); // 3
Linguagem de código: PHP ( php )
Neste exemplo, a add()
função aceita dois inteiros e retorna a soma deles.
No entanto, quando você passa dois pontos flutuantes 1.5 e 2.5, a add()
função retorna 3 porque o PHP força implicitamente os valores para os tipos de destino por padrão. Neste caso, o PHP coage os floats em inteiros .
Para habilitar a digitação estrita, você pode usar a declare(strict_types=1);
diretiva no início do arquivo assim:
<?php
declare(strict_types=1);
function add(int $x, int $y)
{
return $x + $y;
}
echo add(1.5, 2.5);
Linguagem de código: PHP ( php )
Ao adicionar a diretiva de digitação estrita ao arquivo, o código será executado no modo estrito. PHP habilita o modo estrito por arquivo.
No modo estrito, o PHP espera os valores com o tipo correspondente aos tipos de destino. Se houver uma incompatibilidade, o PHP emitirá um erro.
Se você executar o script novamente, o PHP emitirá um erro como segue:
Fatal error: Uncaught TypeError: Argument 1 passed to add() must be of the type int, float given, called in ...
Linguagem de código: PHP ( php )
Observe que você precisa colocar a declare(strict_types=1);
diretiva no início do arquivo de script antes de qualquer outra instrução.
PHP strict_types: o caso especial
A diretiva de digitação estrita tem um caso especial quando o tipo de destino é float
. Se o tipo de destino for float
, você poderá passar um valor do tipo integer
. Por exemplo:
<?php
declare(strict_types=1);
function add(float $x, float $y)
{
return $x + $y;
}
echo add(1, 2); // 3
Linguagem de código: PHP ( php )
PHP strict_types e incluir
Suponha que você defina a add()
função no functions.php
arquivo:
<?php
declare(strict_types=1);
function add(int $x, int $y)
{
return $x + $y;
}
Linguagem de código: PHP ( php )
E você inclui no functions.php
arquivo index.php
:
<?php
include 'functions.php';
echo add(1.5, 2.5);
Linguagem de código: PHP ( php )
Mesmo que functions.php
declare a diretiva de digitação estrita, ela não afeta o index.php
.
Observe que a include
construção carrega o código de outro arquivo em um arquivo. E você aprenderá mais sobre isso no tutorial posterior.
Quando você chama uma função definida em um arquivo com digitação estrita (functions.php) de um arquivo sem digitação estrita ( index.php
), o PHP respeitará a preferência do chamador ( index.php
). Isso significa que cabe ao chamador decidir se deseja usar o modo estrito ou não. Neste caso, o index.php
não será executado no modo estrito.
Resumo
- Use a diretiva strict_types do PHP para ativar a digitação estrita ou o modo estrito.
- No modo estrito, o PHP aceita apenas valores correspondentes às declarações de tipo e emite uma
TypeError
exceção se houver incompatibilidade. - Quando você inclui código de outro arquivo, o PHP usa o modo do chamador.