Type Cast ou Conversão de tipos do PHP: Isso pode te ajudar muito!

Amigos!

Hoje irei abordar um assunto muito simples: The Type Casting de variáveis! Como vozmecêis 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 conciente (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 do Type Cast?

É 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 poderiamos fazer assim:

$id = (int) $_GET['id'];

$result = mysql_query("SELECT * FROM tabela WHERE id=$id");

Assim nossa variável $id só irá aceitar valores inteiros, independende do que estiver na $_GET, por exemplo, se $_GET conter “drop”, $id irá conter 0 (zero, integer), pelo fato do typpe 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,

Tiago.

Tags:

Add a Comment

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *