PHP tipos_estritos

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); // 3Linguagem 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); // 3Linguagem de código:  PHP  ( php )

PHP strict_types e incluir

Suponha que você defina a add()função no functions.phparquivo:

<?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.phparquivo index.php:

<?php

include 'functions.php';

echo add(1.5, 2.5);Linguagem de código:  PHP  ( php )

Mesmo que functions.phpdeclare a diretiva de digitação estrita, ela não afeta o index.php.

Observe que a includeconstruçã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.phpnã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 TypeErrorexceção se houver incompatibilidade.
  • Quando você inclui código de outro arquivo, o PHP usa o modo do chamador.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *