Condicional IF Else no PHP. Aprenda suas características!

Uma das estruturas mais utilizadas em programação é o IF. Nesse artigo vamos aprender como usar a estrutura de condicional IF no PHP. Também falaremos sobre as particularidades dessa estrutura de decisão no PHP e a sintaxe indicada pela PSR-12.

PHP - Fundamentos
Curso de PHP - Fundamentos
CONHEÇA O CURSO

Como funciona a estrutura de decisão IF

A estrutura de decisão IF executa uma ou mais instruções (linhas de código) caso a expressão passada para ela retorne verdadeiro. O IF no PHP possui as seguintes sintaxes:

Para execução de única instrução

if (expressão) 
    instrução

E para execução de mais de uma instrução usamos um bloco de código representado por {}:

if (expressão) {
    instrução 1
    instrução 2
    instrução N
}

Como usar o condicional IF no PHP

Vamos agora ver na prática como podemos usar o condicional IF no PHP. Vamos supor que precisamos avaliar a idade de um paciente para uso de um remédio. Se a idade for menor que 2 anos não é permitido o uso:

$idade = 1;

if ($idade < 2) {
    echo "uso não permitido";
}

Podemos usar qualquer expressão que retorna um booleano para ser analisado na estrutura de decisão.

If Else no PHP! Executando algo quando a condição não é verdadeira

Existem situações onde queremos executar algo caso a expressão passada para o IF não seja verdadeira. Nesse caso podemos utilizar a diretiva else:

$idade = 17;

if ($idade < 2) {
    echo "uso não permitido";
} else {
    echo "uso sem restrições";
}

No exemplo acima, se a idade não for menor que 2 ele cairá no else e mostrará uso sem restrições.

Elseif. Analisando mais uma expressão

Existem situações onde é necessário avaliar uma segunda expressão caso a primeira não seja verdadeira, nesse caso usamos a diretiva elseif:

$idade = 17;

if ($idade < 2) {
    echo "uso não permitido";
} elseif ($idade > 65) {
    echo "uso somente com prescrição médica";
} else {
    echo "uso sem restrições";
}

Se a expressão do if não retornar verdadeiro, ele analisará o elseif, se a expressão $idade > 65 for verdadeira ele mostrará uso somente com prescrição médica, caso contrário ele cairá no else.

PHP - Recursos essenciais
Curso de PHP - Recursos essenciais
CONHEÇA O CURSO

Conversões automáticas do PHP

O PHP é uma linguagem de programação de tipagem fraca, devido a essa característica sempre que possível ele tenta converter os valores automaticamente. Isso também acontece quando passamos algo para o IF que não é uma expressão que retorna um booleano.

Veja o exemplo abaixo:

$string = "Treinaweb";

if ($string) {
    echo "Retornou verdadeiro";
}

No exemplo acima o PHP fez a conversão da string “Treinaweb” para booleano. É como se fizéssemos (bool) $string. Se testarmos isso veremos que retorna verdadeiro:

var_dump((bool) $string); //retorna booleano true

Essa mesma conversão acontece se passarmos outros tipos como número, array, objeto e etc. Na documentação existe uma tabela de comparação PHP. Essas conversões de IF são definidas na coluna boolean : if($x) da tabela:

Tabela de conversão de tipos para condicional IF Else no PHP

Note que itens como números diferentes de 0, strings diferentes de “” e arrays com elementos retornam verdadeiro. Enquanto numero 0, string vazia e array vazio retornam falso.

Sempre use comparação estrita no PHP

Devido a mesma característica da linguagem explicada no tópico anterior, o PHP também tenta realizar conversões quando vamos comparar valores. Por exemplo, ao tentarmos fazer:

$string = "Treinaweb";

if ($string == 0) {
    echo "Retornou verdadeiro";
}

A expressão do IF retornará verdadeiro! Parece estranho, mas na realidade o que acontece é que o php tenta converter a string “treinaweb” para inteiro. Quando tentamos converter uma string para inteiro, o PHP olha no começo dela se tem algum número que pode aproveitar, por exemplo:

$string = "10Treinaweb";

echo (int) $string; //imprime 10

Quando não tem nada no início da string que pode ser aproveitado, o PHP retorna um inteiro 0. Logo 0 é igual a 0 por isso retorna verdadeiro e entra no IF.

Existem os comparadores estritos, que verificam o tipo e o valor. Se o tipo não for igual nos dois comparados ele nem olha o valor. Veja como ficaria o IF anterior:

$string = "Treinaweb";

if ($string === 0) {
    echo "Retornou verdadeiro";
}

Nesse modo como temos uma string e um inteiro ele já retornará falso diretamente. Existe também o operador diferente estrito representado pelo símbolo !==

IF Else no PHP e o padrão PSR-12

As PSRs do PHP definem um conjunto de recomendações para a linguagem de programação PHP. A PSR-12 mais especificamente define o padrão para codificação. Segundo ela o IF Else no PHP deve seguir as seguintes regras:

  • Obrigatório: Espaço após a palavra chave da estrutura;
  • Proibido: Espaço após o parêntese de abertura;
  • Proibido: Espaço antes do fechamento do parêntese;
  • Obrigatório: O corpo da estrutura de controle deve estar envolvido por chaves, mesmo que possua só uma instrução;
  • Obrigatório: Espaço entre o parêntese de fechamento e a abertura da tag;
  • Obrigatório: Uma identação no corpo da estrutura;
  • Obrigatório: O corpo deve estar uma linha depois da abertura da chave
  • Obrigatório: A chave de fechamento deve estar uma linha após o corpo;

O que vai resultar em um código formatado do seguinte modo:

if ($idade < 2) {
    echo "uso não permitido";
} elseif ($idade > 65) {
    echo "uso somente com prescrição médica";
} else {
    echo "uso sem restrições";
}

Vale ressaltar que pela recomendação nunca devemos usar IF sem o bloco {}, deste modo:

if ($idade > 2)
    echo "uso sem restrições";
Desenvolvedor PHP Júnior
Formação: Desenvolvedor PHP Júnior
Nesta formação você aprenderá todos os fundamentos necessário para iniciar do modo correto com a linguagem PHP, uma das mais utilizadas no mercado. Além dos conceitos de base, você também conhecerá as características e a sintaxe da linguagem de forma prática.
CONHEÇA A FORMAÇÃO

Considerações finais

A estrutura de decisão IF possui uma sintaxe muito simples e fácil no PHP, porém é importante nos atentarmos aos detalhes específicos da linguagem, como, as conversões automáticas, uso de comparadores estritos ao invés de comparadores simples e as recomendações da PSR-12.

Deixe seu comentário

Professor e desenvolvedor. Formado em análise e desenvolvimento de sistema, pós graduando em engenharia e arquitetura de software. É autor de cursos em diversos temas, como, desenvolvimento back-end, cloud computing e CMSs. Nas horas vagas adora estudar sobre o mercado financeiro, cozinhar e brincar com pequeno Daniel. @eltonfonsecadev

© 2004 - 2019 TreinaWeb Tecnologia LTDA - CNPJ: 06.156.637/0001-58 Av. Paulista, 1765, Conj 71 e 72 - Bela Vista - São Paulo - SP - 01311-200