Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Parâmetros nas Funções

O php faz a validação dos tipos passados como argumentos na função assim como em outras linguagens?

Ex: function exibeMensagem(string $mensagem){
    echo $mensagem;
}

Se eu passar um tipo inteiro para esta função ela irá apresentar um erro ou irá converter para um tipo string?
2 respostas

Talvez isso aqui, https://www.php.net/manual/pt_BR/functions.arguments.php, ajude. Não tenho como dar uma resposta mais resumida já que não trabalho com PHP há mais de 10 anos.

solução!

Olá Gilson,

O PHP faz um teste sim, ele antes tenta fazer uma conversão para o tipo definido e caso não seja possível converter ele retorna uma exceção TypeError:

function exibeMensagem(string $mensagem)
{
    echo $mensagem;
}

// Funciona
$int = 123;
exibeMensagem($int);

// Não funciona
$array = ['aaa', 'bbb'];
exibeMensagem($array);

É possível você definir que o PHP seja mais estrito e retorne um erro sempre que o tipo for diferente, sem tentar a conversão antes:

// Essa linha diz ao php para ser mais rígido com os tipos
declare(strict_types=1);

function exibeMensagem(string $mensagem)
{
    echo $mensagem;
}

// Funciona
$string = "Olá";
exibeMensagem($string);

// Não funciona
$int = 123;
exibeMensagem($int);

// Não funciona
$array = ['aaa', 'bbb'];
exibeMensagem($array);