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.