Curso de PHP – Estrutura de controles
Durante o desenvolvimento de um projeto é muito comum que o sistema precise receber alguma informação e com base nessa informação, tomar um decisão para escolher o próximo caminho(ou bloco de comandos) a ser executado. Um exemplo rápido disso é o login. Caso a pessoa esteja logado no site, o mesmo deve apresentar um conteudo diferente do caso do usuário ser apenas um visitante. Vamos ilustrar esse exemplo, com 2 estruturas de controle encontradas no PHP.
if / else
o comando “if” com certeza é o mais conhecido na área da programação. Você faz uma pergunta para o PHP e caso essa seja verdadeira, ele irá executar o que lhe foi mandado, ou caso seja falsa, executará outro bloco (opcional)
ex:
if($logado == true){
echo "Olá usuário logado.";
}
Esse bloco acima, irá imprimir a mensagem entre aspas, caso a variavel $logado seja verdadeira. Se ela for falsa, nada acontece. Agora veja o mesmo exemplo com else:
if($logado == true){
echo "Olá usuário logado.";
}else{
echo "Olá visitante.";
}
Esse diferencial será executado, apenas quando a condição do IF for falsa. Então, se o usuário não estiver logado, o sistema irá trata-lo como visitante. Para aninhar ifs, isto é, realizar várias validações no mesmo bloco, você pode usar o camando elseif. Veja o exemplo modificado a seguir:
if($logado == 1){
echo "Olá usuário logado.";
}elseif($logado==2){
echo "Olá Administrador.";
}else{
echo "Olá visitante.";
}
Percebe a diferença? Antes do PHP escapar para o ELSE, ele faz mais uma verificação para ver se a váriavel $logado possuí o valor 2. Caso seja verdadeiro, ele imprime a mensagem senão, cai no else normalmente.
O PHP nos fornece uma outra estrutra chamada “switch”. Ela nos permite fazer “IFs aninhados” de forma muito mais elegante. A diferença é que a expressão para todas as opções deve ser a mesma (enquanto no “if aninhado” você pode mudar a expressão). Outros dois detalhes importante são que: ao fim de cada bloco de opções, você deve adicionar a palavra reservada “break” para que o interpretador não continue executando os outros códigos e que o “else” não existe no switch. O comando que realiza a mesma função dele chama-se “default”. veja o mesmo exemplo do “if aninhado” reescrito com switch:
switch($logado){
case 1: echo "Olá usuário logado.";
break;
case 2: echo "Olá Administrador.";
break;
default: echo "Olá visitante.";
}
O Código fica muito mais elegante e limpo. Principalmente quando existem muitos caminhos diferentes para seguir.