Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

A tipagem da função não está sendo reconhecida

Meu php é o 7.4

Executei o seguinte comando via CLI

Não era para dar erro dizendo que foi passado o tipo de dado errado como parâmetro?

php > function sacar(array $conta, float $valorASacar){
php {   if($valorASacar > $conta['saldo']){
php {     echo 'Sem saldo';
php {   }
php {   else{
php {     $conta['saldo'] -= $valorASacar;
php {   }
php {   return $conta;
php { }
php > print_r(sacar(['saldo'=>1000], '100'));
Array
(
    [saldo] => 900
)
php >       

O valor que enviei para a função foi string e não float.

1 resposta
solução!

A tipagem funciona, o que está acontecendo é que o PHP está convertendo automaticamente a sua string em um int/float.

Para você mudar esse comportamento e dizer ao PHP que você quer realmente uma tipagem mais forte terá que usar : "declare(strict_types=1);" no topo dos seus arquivos.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software