# 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](https://www.php.net/manual/pt_BR/language.control-structures.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\**](https://vinyanalista.github.io/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
<?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)](https://www.php-fig.org/psr/), 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](https://vinyanalista.github.io/portugol/) é uma plataforma desenvolvida por um colega da faculdade, o [Antônio Medeiros](https://antoniomedeiros.dev/), que foi criada baseada no [TCC dele](https://vinyanalista.github.io/portugol/tcc_portugol_antonio.pdf). Indico fortemente a leitura para quem ainda está estudando algoritmos, pois o trabalho do cara foi insano.
