DesenvolvedorWordPress WhatsApp

declare(strict_types=1) pega bug que passaria batido

O PHP tenta ser prestativo convertendo tipos, e é justamente aí que o bug se esconde.

Falar comigo no WhatsApp

Dica de PHP · publicada em

Sem strict_types, passar a string "12abc" para um parâmetro tipado como int resulta em 12 mais um aviso. Em produção com aviso desligado, você nunca fica sabendo — e o dado errado segue para o banco.

Com a declaração no topo do arquivo, esse mesmo caso vira TypeError, que você vê no log e corrige. O escopo é por arquivo, então dá para adotar aos poucos: cada arquivo novo do plugin já nasce estrito.

Cuidado só ao aplicar em arquivo que recebe dado direto de $_POST, onde tudo chega como string. Ali você converte explicitamente antes de passar adiante — que é exatamente o que você deveria estar fazendo de qualquer jeito.

<?php
declare(strict_types=1);

function preco_com_desconto(float $preco, int $percentual): float {
    return $preco * (1 - $percentual / 100);
}

// sem strict_types: '10' vira 10 em silencio
// com strict_types: TypeError, e voce corrige a origem

Na prática: põe declare(strict_types=1); em todo arquivo novo do seu plugin. É por arquivo, dá pra adotar gradualmente.

Precisa resolver isso no site de um cliente agora?

Me chame no WhatsApp com o contexto. Diagnóstico inicial sem compromisso.

WhatsApp: (43) 99932-9697

ou e-mail: [email protected]

Tem alguma dúvida? Ficarei feliz em ajudar. Clique Aqui