[Resolvido] Type casting explicito
Bom galera.Vou estar aqui citando porque o type-casting explicito é uma boa prática,as razões e exemplos são poucas,mas decisivas.
As razões que cito são:
-Aumento da legibilidade do código.
-Processamento mais rápido (quando usando comparações de tipos).
Alguns tipos:
(bool) - (Boolean) [verdadeiro,falso]
(int) - (Integer) [número inteiro (1,2,3,4,5)]
(float) - (Float) [número flutuante (1.0,-1.2,2.5)]
(double) - (Double) [|| (2.0,1.5,2.4)]
(array) - (array) [variavel de multiplas posicoes ($a[0],$a[1])]
(object) - (Object) [instancia de uma classe ($var = new classe;)]
Type casting: conversão de tipos.
Exemplos de type-casting explicito:
<?php
$variavel = (bool) 1; //true
$variavel2 = (bool) 0; //false
$variavel3 = (bool) true; //true
$variavel4 = (Boolean) true; //mesmo que anterior
?>
<?php$numero = (int) '123'; //123
if($numero !== '123'){
echo 'Sempre entra';
}$numero = '123'; //string 123
if($numero !== 123){
echo 'Sempre entra';
}$numero = (Integer) '123'; //123
if($numero === 123){
echo 'Sempre entra';
}
<?php
$var = '2.0';
$var2 = (double) '2.0';echo getType($var); //string
echo getType($var2); //double
?>
<?phpclass ts {
}
$obj = (object) new ts; //mais pra legibilidade nesse caso
$arr = (array) array(); //Tosco
$arr2 = (array) $arr; //melhor legibilidade
?>
A comparação de tipos é feita usando-se uma variavel seguida do comparador === seguida de outra variavel.
Queria ressaltar também para não usarem em todos os casos.
(int) 'abc' é considerado como integer,o que em certos casos pode ser um pouco 'chato'.
Para pegar o tipo de uma variavel ou dado,utiliza-se a função getType.
getType($variavel_ou_valor);
Lembrando que, $var = (int) 10 é mais legivel que $var = 10.
Esse "type-casting explicito",é meio que pra incorporar uma tipagem definida (das linguagems de alto nivel [c,java,etc]).
As string foram declaradas com '' e não com "" pois é mais rápido utilizar '' do que "" ao declarar strings.Ao utilizar '',você diz ao php que o que está ali é apenas uma string,e não terá nenhuma váriavel "automaticamente concatenada".
<?php
$string = 'abc';
$a = '$string';
echo $a; //$string
echo eval($a); //abc
?>
Abraço!
Edit:se vocês fizerem o type casting explicitamente o php não tentará o fazer implicitamente e o script ficará mais rapido.
Tem também a questão de alguns bancos de dados não aceitarem comparações de strings com integers,e etc.Dba's,geralmente deixam esse type-casting que o banco de dados faz explicito.
Existe também o tipo byte..
Discussão (0)
Carregando comentários...