is_bool()
A função is_bool() do PHP verifica se uma variável é do tipo boolean. Saiba sintaxe, valores de retorno e quando usá-la no seu código.
Introdução
is_bool() é uma função PHP embutida que informa se uma variável contém um valor boolean. Um boolean é o tipo de dado mais simples do PHP: ele só pode ser true ou false.
O ponto fundamental a entender é que is_bool() verifica o tipo da variável, não se o valor é "truthy" ou "falsy". Uma string como "true", o inteiro 1 ou um array vazio são avaliados como truthy ou falsy em uma instrução if, mas nenhum deles é realmente um boolean, portanto is_bool() retorna false para todos eles. Apenas um valor proveniente de um literal boolean (true/false) ou de uma expressão de comparação/lógica (que sempre produz um boolean) passa no teste.
Esta página aborda a sintaxe, o que is_bool() retorna para os valores que você provavelmente testará e quando usá-la em código real.
Sintaxe
is_bool(mixed $value): boolEla recebe um único argumento, $value — a variável que você deseja inspecionar — e retorna true se esse valor for do tipo boolean, false caso contrário. A função nunca modifica a variável e nunca gera um erro: ela sempre retorna um boolean próprio.
Exemplo de uso
O exemplo abaixo testa um boolean verdadeiro contra uma string para que você possa ver exatamente o que é impresso:
Exemplo de is_bool() em PHP
Observe a saída com atenção: ao usar echo em um boolean, true se torna a string "1" e false se torna uma string vazia "". É por isso que a segunda linha parece em branco — is_bool($name) retornou false, e o PHP imprime false como nada. Para obter um resultado inequívoco durante a depuração, use var_dump() em vez de echo, pois ele imprime bool(true) / bool(false).
O que conta como boolean
Um erro comum é presumir que valores "truthy" são booleans. Não são. A tabela abaixo mostra o que is_bool() retorna para uma variedade de valores:
<?php
var_dump(is_bool(true)); // bool(true)
var_dump(is_bool(false)); // bool(true)
var_dump(is_bool(5 > 3)); // bool(true) — a comparison yields a boolean
var_dump(is_bool(1)); // bool(false) — integer, not boolean
var_dump(is_bool("true")); // bool(false) — string, not boolean
var_dump(is_bool(null)); // bool(false) — null is its own type
var_dump(is_bool([])); // bool(false) — empty array
?>Os valores 1, "true", null e [] são todos falsy ou truthy em condições, mas seu tipo é inteiro, string, null e array respectivamente — portanto is_bool() os rejeita.
Quando usar
is_bool() é mais útil nas fronteiras do seu código, onde o tipo de dado importa:
- Validar argumentos de função. Se uma função espera um sinalizador estrito de ligado/desligado,
is_bool()permite rejeitar"yes",1ounullantes que causem bugs sutis. - Distinguir
falsede "nenhum valor". Funções comostrpos()retornamfalseem caso de falha, mas um0válido em caso de sucesso. Verificar o tipo comis_bool()(ou o operador===) evita confundir os dois. - Lidar com configurações mistas. Configurações carregadas de JSON ou de um formulário podem chegar como strings;
is_bool()informa se um valor já é um boolean real ou ainda precisa de conversão com boolval().
<?php
function setFeature(string $name, $enabled): void
{
if (!is_bool($enabled)) {
throw new InvalidArgumentException("\$enabled must be a boolean.");
}
echo "$name is now " . ($enabled ? "on" : "off") . "\n";
}
setFeature("dark_mode", true); // dark_mode is now on
// setFeature("dark_mode", 1); // would throw: $enabled must be a boolean
?>Funções relacionadas
is_bool() faz parte da família de funções de verificação de tipo do PHP. A função correta depende do tipo que você precisa verificar:
- is_int() — verifica inteiros.
- is_string() — verifica strings.
- is_array() — verifica arrays.
- is_null() — verifica
null. - gettype() — obtém o tipo de qualquer variável como uma string.
- boolval() — converte um valor para boolean em vez de apenas testá-lo.
Conclusão
is_bool() responde a uma pergunta precisa: o tipo desta variável é boolean? Ela retorna true apenas para true, false e os resultados de expressões de comparação ou lógicas — nunca para strings, números ou arrays truthy. Use-a para proteger argumentos de função, diferenciar um false real de um valor "ausente" e manter seu código funcionando com os tipos de dados exatos que você espera.