Type Cast ou Conversão de tipos do PHP: Isso pode te ajudar muito!
Hoje irei abordar um assunto muito simples: conversão de tipos do PHP. The Type Casting de variáveis! Como vocêss sabem o PHP não é uma linguagem fortemente tipada, ou seja, pode-se fazer qualquer putaria com uma variável. Eu sinceramente acho isso horrível e talvez essa seja uma das causas do PHP ser reconhecido como uma linguem “suja” e de “moleque”.
Entretanto, você que é ou aspira ser um desenvolvedor PHP consciente (e competente), deve saber que manter o tipo de uma variável do começo ao fim da execução do script é uma excelente prática.
Mas afinal, onde entra a tal história de Conversão de Tipos do PHP?
É muito simples! se você fizer uma declaração como:
$salario = '2256,52'
Verás que a variável $salario, apesar de você querer que ela armazene na verdade um double, ela irá conter uma String!, agora como resolver este enigmático problema?
$salario = (double) str_replace(',','.', '2256,52');
Pronto! assim, usando a função var_dump você poderá verificar que a variável, agora contém um float (mesma coisa q double no PHP). Dessa maneira tem-se que o type casting é muito útil na recuperação de dados de formulários!
Existe também a utilização para evitar SQL Injection, para você garotinho jovem, garotinho juvenil que não gosta de usar PDO, veja a situação:
“Eu tenho um trecho de código que pega uma variável $_GET, que contém uma ID que pretendo resgatar no banco”
Nesse caso, os desenvolvedores mais preocupados usam trilhões de expressões regulares e adventos para garantir que só passe de fato um número para a tal String de query, veja:
$id = limpar($_GET['id']); $result = mysql_query("SELECT * FROM tabela WHERE id=$id");
Veja que na função limpar() estamos exemplificando a tentativa de remover palavras reservadas do SQL como drop, por exemplo.
Mas… como sabemos, a maioria das ID’s são numéricas e inteiros, então poderíamos fazer assim:
$id = (int) $_GET['id']; $result = mysqli_query("SELECT * FROM tabela WHERE id=$id");
Assim nossa variável $id só irá aceitar valores inteiros, independente do que estiver na $_GET, por exemplo, se $_GET conter “drop”, $id irá conter 0 (zero, integer), pelo fato do type cast só resgatar valores inteiros do variável $_GET.
Muito interessante não é?
O PHP tem muitos elementos práticos rápidos, leia a documentação =)
Abraços!