PHP para Iniciantes: Estruturas de Controle - IF

Traduzido como SE, if é a primeiríssima estrutura de controle que podemos encontrar na documentação oficial do PHP. E concordo em ser a primeira abordada, pois quando desejamos controlar a execução de determinados trechos de código, as condições são as primeiras coisas que refletimos.

Então, tratando-se de limitar uma execução a determinados pré-requisitos, surgiu essa estrutura maravilhosa que é o if. Se você já viu Portugol*, provavelmente já deve ter se deparado com alguma sentença semelhante a seguinte:

se o céu está coberto de nuvens escuras, então vai chover

E sim, essa estrutura representa exatamente isso. SE {isso}, ENTÃO {aquilo}.

Em algumas linguagens, nós podemos encontrar uma sintaxe que segue essa lógica ao pé da letra: if (...) then (...);. Mas no PHP é um pouco diferente, não tão semântico assim.

Ué, Kiko... Você sempre fala sobre PHP ser uma linguagem semântica...

E é! Mas vamos concordar que escrever if (...) (...) não é tão claro quanto a outra escrita mais literal, não é? Cadê o then?! A escrita é tão simples que escrever um if (true) false; é considerado ok. Mas tudo bem, há outras linguagens de programação com casos bem mais assustadores que isso, não vamos reclamar de barriga cheia.

Mas Kiko, vi em uns exemplos que você usa chaves no if... Por quê?

Boa pergunta! Na verdade, eu sempre menciono estruturas de controle como uma forma de controlar blocos de código. Quando falamos em bloco, falamos em utilizar chaves ({ }) para descrever um conjunto de instruções.

Mas você sabia que essa não é a única forma de escrevr um if? O PHP tem três formas de escrever um if de instrução única (no caso de blocos, apenas duas):

<?php

// OBS.: a quebra de linha e/ou a identação são opcionais, apenas melhora a legibilidade do código

// Modo 1. Sem bloco de código (chave)
if (true)
    echo 'É true 1!' . PHP_EOL;

// Modo 2. Com bloco -- POR FAVOR, ESCREVA SEMPRE ASSIM
if (true) {
    echo 'É true 2!' . PHP_EOL;
    // assim podemos incluir outras instruções, não somente uma
}

// Modo 3. Estrutural/procedural (você declara explicitamente onde o if termina)
if (true):
    echo 'É true 3!' . PHP_EOL;
endif;

Você acha legal usar o procedural, Kiko?

Confesso que acho bem legal, pois você deixa explícito que está encerrando um if. Se você tiver outras estruturas declaradas ali no meio, não tem como fechá-las acidentalmente, o que poderia ocorrer ao usar somente chaves ({ }). Porém isso é um exagero, dá pra viver sem.

Então não tem jeito certo de escrever, Kiko?

"Jeito certo" é muito pesado para afirmar, podemos falar do "jeito recomendado", que é o Modo 2. Independente se a estrutura vai encapsular somente uma instrução ou não, organizar o código em forma de blocos deixa ele infinitamente mais legível.

E apesar de que quebras de linha e identações são opcionais: sempre faça! Sem essa de "tentar reduzir uns bytes do arquivo". O PHP não é o código que é transmitido pro client-side, somente processado no back-end! Seu peso normalmente não afeta essa relação.

Se a sua máquina não for boa o suficiente para abrir um texto grande, é só quebrar o texto em mais arquivos, concorda?! Afinal, isso é possível no PHP (e também é uma das recomendações: nada de códigos muito longos). Seguindo esses padrões (PSRs), você perceberá que o código vai ficar muito mais fácil de dar manutenção e de desenvolver novas funcionalidades. #fikdik

E por hoje é só! Já tinha ouvido falar da estrutura de condição? Comenta aí! E qual foi a escrita mais bizarra que já viu? Hehe.

No próximo artigo, falaremos sobre a estrutura de controle ELSE, que é um super parceiro do IF. Penso em escrever também sobre ELSEIF / ELSE IF no mesmo artigo, mas não vou bater esse martelo ainda. Espera aí que jaja chega!

Inté!

Referências

* Portugol Online é uma plataforma desenvolvida por um colega da faculdade, o Antônio Medeiros, que foi criada baseada no TCC dele. Indico fortemente a leitura para quem ainda está estudando algoritmos, pois o trabalho do cara foi insano.