O PHP pode converter o tipo de dado de uma variável, se necessário, dado o contexto em que é usado automaticamente. Por esta razão tipo explícito conversões são raramente necessário. No entanto, o tipo de uma variável ou expressão pode ser alterada através da realização de um tipo “cast explícito” ou Conversão explícita.

Conversões explícitas

Uma conversão explícita é realizada colocando-se o tipo de dados desejado entre parênteses antes da variável ou o valor que está a ser avaliada. No exemplo abaixo, o cast explícito força a variável bool para ser avaliada como um int.

<?php
    $myBool = false;
    $myInt = (int)$myBool; // 0
?>

Um uso para conversões explícitas podem ser vistas quando a variável bool é enviado como saída para a página. Devido ao tipo automático conversões o valor false se torna uma vazia e portanto não é exibido. Ao primeiro convertê-lo para um número inteiro, o valor false vai aparecer como zero.

<?php
    echo $myBool; // ""
    echo (int)$myBool; // "0"
?>

Tipos de cast estão listados na tabela abaixo.

NomeDescrição
(int), (integer)Cast para int
(bool), (boolean)Cast para bool
(float), (double), (real)Cast para float
(string)Cast para string
(array)Cast para array
(object)Cast para object
(unset)Cast para null

Para dar alguns exemplos, o cast array irá converter um tipo escalar para uma matriz com um único elemento. Ele executa a mesma função que usando o construtor array.

<?php
    $myInt = 10;
    $myArr = (array)$myInt;

    $myArr = array($myInt); // o mesmo que acima
    echo $myArr[0]; // "10"
?>

Se um tipo escalar como int é convertido em objeto torna-se uma instância da classe interna stdClass. O valor da variável será armazenado em uma propriedade desta classe chamada escalar.

<?php
    $myObj = (object)$myInt;
    echo $myObj->scalar; // "10"
?>

O cast faz a variável unset  ser nulo. Apesar do nome, ele realmente não retirar a variável. O cast só existe para complementar, como nulo é considerado um tipo de dados.

<?php
    $myNull = (unset)$myInt;
    $myNull = null; // o mesmo que acima

?>

Settype

Uma conversão explícita não altera o tipo da variável que precede, apenas como ela é avaliada em que expressão. Para alterar o tipo de uma variável a função settype pode ser usado, levando dois argumentos. O primeiro é a variável a ser convertida e o segundo é o tipo de dados dada como uma string.

$myVar = 1.2;
settype($myVar, 'int'); // convert variable to int

Alternativamente, um tipo de conversão pode ser realizada armazenando o resultado de uma conversão explícita de volta na mesma variável.

$myVar = 1.2;
$myVar = (int)$myVar; // 1

Gettype

Relacionado a settype é a função gettype, que retorna o tipo da fornecida argumento como uma string legível.

$myBool = true;
echo gettype($myBool); // "boolean"

 

Links da Documentação

http://php.net/manual/pt_BR/language.types.type-juggling.php

Deixe um comentário

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

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.