Estruturas de controle remetem a decisões de um trecho de código que deverá ser executado baseado em um teste lógico. Para verificar se a resposta é VERDADEIRA ou FALSA, você precisará usar alguma das estruturas de controle de decisão.
Vamos exemplificar com pseudocódigo:
- Vá até o seu portão.
- Tente trancar o portão.
- Se você tiver a CHAVE, faça:
- Tranque Portão.
- Se NÃO:
- Busque a chave;
- Volte ao portão;
- Tranque o portão.
- Ligue o interruptor.
- Se a LÂMPADA NÃO acender, faça:
- Procure uma lâmpada nova;
- Remova a lâmpada queimada;
- Insira a nova lâmpada.
Foram dados exemplos de como funcionaria estruturas de condições, agora vamos analisar cada uma delas.
A estrutura condicional if
recebe um valor e resolve, colocando a resposta como um valor BOOLEANO. Ou seja: você poderá retornar apenas um valor VERDADEIRO, representado por if (condição) ou FALSO, representado por else (como os exemplos de SE dados acima).
Estrutura de código para a condição IF/ELSE:
if (condition) {
// condição verdadeira
// faça algo
} else {
// condição falsa
}
A estrutura acima representa exatamente como será feito em código, abaixo alguns exemplos:
$idade = 17;
if ($idade >= 18) {
echo "Você é maior de idade";
} else {
echo "Você é menor de idade";
}
// Result: "Você é menor de idade"
$grupo = "ZezinhoDevs";
if ($grupo == "He4rtDevs") {
echo "Sim, esse é o melhor grupo de devs do brasil";
} else {
echo "Isso nem existe velho tá maluco";
}
// Result: "Isso nem existe velho tá maluco"
$estouLogado = true;
if ($estouLogado) {
echo "Continue acessando sua aplicação";
} else {
echo "Redirecionando para o login";
}
// Result: "Continue acessando sua aplicação"
$usuario = "danielhe4rt";
$senha = "secret123";
if ($usuario == "danielhe4rt" && $senha == "secret123") {
echo "Olá danielhe4rt, seja bem vindo";
} else {
echo "Credenciais incorretas";
}
// Result: "Olá danielhe4rt, seja bem vindo"
Quando vemos algum tipo de condição de if/else, o IDEAL é que sejam duas possibilidades de escolha. Porém, toda linguagem de programação existe a condicional extra chamada else if, na qual adiciona mais uma possibilidade de retorno VERDADEIRA para a condição.
Na prática, você pode ter N checagens para interpretar uma resposta retornando VERDADEIRO, até chegar na condição FALSA. Entenda o exemplo abaixo:
if (first condition) {
// condição verdadeira
} else if(second condition) {
// condição verdadeira
} else if(third condition) {
// condição verdadeira
} else {
// condição falsa
}
Você pode adicionar quantos Else if's você quiser no código, mas lembre-se de terminar usando else para ter uma interpretação de condição FALSA.
Abaixo alguns exemplos:
$userDaniel = "danielhe4rt";
$passDaniel = "secret123";
$userCaio = "caioarruda";
$passCaio = "caiozin123";
if ($userDaniel == "danielhe4rt" && $passDaniel == "secret123") {
echo "Olá danielhe4rt, seja bem vindo";
} else if ($userCaio == "caiozin" && $passCaio == "321321") {
echo "Olá caiozin, seja bem vindo";
} else {
echo "Credenciais incorretas";
}
O construtor switch parece bastante com a lógica do if/else if, porém há uma estrutura melhor para comportar o que você deseja colocar como valores predefinidos.
A declaração tem como base uma condição e N casos de uso dependendo do valor inserido na condição, e é finalizado após a palavra reservada break ser acionada, que pode ser interpretado como o fim de um bloco de código...
Caso não haja nenhuma opção elegível dentro dos casos citados, você pode usar a opção default para retornar um valor padrão.
Um bom exemplo de quando usar o switch case é quando você está em um jogo/chat e há comandos onde um bot te responde baseado no que você inseriu no chat.
Estrutura do switch-case:
switch (cond) {
case val1:
// faça algo
break;
case val2:
// faça algo
break;
case val3:
// faça algo
break;
defaut:
// faça algo quando nenhuma das opções for selecionada
break;
}
Lista de comandos
$comando = "!he4rt";
switch($comando){
case "!site":
echo "Link: https://heartdevs.com";
echo "Esse é o site oficial";
break;
case "!he4rt":
echo "Entre no nosso discord: https://discord.com/he4rt";
echo "Esse é o discord oficial";
break;
case "!comandos":
echo "Segue a lista de comandos";
echo "!he4rt !site";
break;
default:
echo "nada acontece feijoada";
break;
}
// return Entre no nosso discord: https://discord.com/he4rt Esse é o discord oficial
Comando não existente
$comando = "!teste";
switch($comando){
case "!site":
echo "Link: https://heartdevs.com";
echo "Esse é o site oficial";
break;
case "!he4rt":
echo "Entre no nosso discord: https://discord.com/he4rt";
echo "Esse é o discord oficial";
break;
case "!comandos":
echo "Segue a lista de comandos";
echo "!he4rt !site";
break;
default:
echo "nada acontece feijoada";
break;
}
// return Nada acontece feijoada
O operador ternário ajuda na escrita de condições if/else diminuindo para uma única linha. Ou seja, será algo para ser usado quando você tem uma fácil comparação e um retorno SIMPLES.
O operador ternário leva alguns símbolos para substituir o uso de parênteses e chaves, sendo eles o ? e :
O Sinal de ? sinaliza para o interpretador que tudo que for escrito anteriormente, será a condição a ser executada.
Após o sinal de ? e entre o sinal de : é o que irá retornar se a condição for verdadeira e após o sinal de : é o que irá retornar caso a condição for falsa.
Abaixo alguns exemplos:
Modelos de ternário
condition ? case true : case false;
$nickname = 'danielhe4rt';
$who = $nickname == "jorge123" ? "é o jorge online" : "não é o jorge online";
echo $who; // não é o jorge online
$modoTeste = true;
return $modoTeste ? "MODO DESENVOLVIMENTO ATIVADO" : "MODO DESENVOLVIMENTO DESATIVADO";
// return MODO DESENVOLVIMENTO ATIVADO