Linguagem PHP: Introdução ao Desenvolvimento Web
Published: 2023-07-25 14:20:22

## Tópicos
&nbsp;1. [Introdução](#introdu%C3%A7%C3%A3o)
&nbsp;2. [Interpretador de PHP](#interpretador-de-php)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.1. [Tags de Marcação de Início e Fim](#tags-de-marca%C3%A7%C3%A3o-de-in%C3%ADcio-e-fim)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a. [Códigos Fora das Tags:](#c%C3%B3digos-fora-das-tags)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.2. [Comentários](#coment%C3%A1rios)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.3. [Tipos de Dados](#tipos-de-dados)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.4. [Operadores](#operadores)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.5. [Variáveis](#vari%C3%A1veis)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.6. [Estruturas de Controle:](#estruturas-de-controle)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.7. [Arrays e Arrays Associativos](#arrays-e-arrays-associativos)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.8. [Loop foreach](#loop-foreach)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.9. [Loops com dois pontos e end](#loops-com-dois-pontos-e-end)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.10. [Sintaxe Resumida do Echo](#sintaxe-resumida-do-echo)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.11. [Fim de Bloco de Código e Último Bloco de Código de um Arquivo](#fim-de-bloco-de-c%C3%B3digo-e-%C3%BAltimo-bloco-de-c%C3%B3digo-de-um-arquivo)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.12. [Intercambiando Códigos PHP com HTML](#intercambiando-c%C3%B3digos-php-com-html)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a. [Exemplo com laço FOREACH](#exemplo-com-la%C3%A7o-foreach)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b. [Exemplo de instrução condicional IF/ELSE](#exemplo-de-instru%C3%A7%C3%A3o-condicional-ifelse)
&nbsp;3. [Conclusão](#conclus%C3%A3o)

## Introdução

PHP é uma linguagem de programação amplamente utilizada para desenvolvimento web. Criada por Rasmus Lerdorf em 1994, PHP (que inicialmente significava "Personal Home Page", mas agora é uma sigla recursiva para "PHP: Hypertext Preprocessor") evoluiu para se tornar uma ferramenta poderosa e flexível para criar aplicações web dinâmicas.

## Interpretador de PHP

PHP é uma linguagem interpretada, o que significa que o código-fonte PHP é lido e executado linha por linha durante o tempo de execução, em vez de ser compilado em um programa independente. O interpretador de PHP é um software que interpreta e executa os scripts PHP. Quando você executa um script PHP diretamente da linha de comando, os resultados são mostrados diretamente no terminal.

### Tags de Marcação de Início e Fim

Em PHP, o código a ser interpretado é delimitado por tags de marcação especiais que indicam ao interpretador onde o código PHP começa e termina. As tags de marcação padrão são:

```php
<?php
// Código PHP aqui
?>
```

Também é comum usar a tag curta `<?`, mas é importante notar que nem todos os servidores web suportam essa forma curta de tag e pode estar desabilitada nas configurações de PHP. No entanto, ao executar o script diretamente da linha de comando, as tags curtas geralmente são suportadas.

#### Códigos Fora das Tags:

Quando você executa um script PHP diretamente da linha de comando, qualquer conteúdo fora das tags de marcação <?php ?> é tratado como saída padrão e é exibido diretamente no terminal. Isso significa que você pode usar o PHP para gerar e mostrar informações no terminal, mesmo que não esteja rodando o script em um servidor web. Isso também significa que você pode escrever qualquer coisa fora das tags de marcação PHP para serem escritas diretamente na saída.

Por exemplo, considere que o código a seguir chama-se `script.php`:
```php
Olá, sua idade é: <?php
$idade = 18;
echo $idade;
?>
```

Uma chamada no terminal por 
```bash
php script.php
```
Teria como resultado 
```
Olá, sua idade é 18
```

Se o seu código não contiver nenhuma tag PHP, o resultado da execução do script usando o interpretador do PHP será exatamente o conteúdo do arquivo.

### Comentários

Em PHP, você pode adicionar comentários para documentar seu código. Comentários são trechos de texto que não são executados pelo interpretador e servem apenas para explicar o que o código faz. Existem dois tipos de comentários em PHP:

**Comentários de uma única linha:**
```php
// Este é um comentário de uma única linha
```

**Comentários de múltiplas linhas:**
```php
/* 
   Este é um comentário 
   de múltiplas linhas
*/
```

### Tipos de Dados

PHP suporta vários tipos de dados:

- **int**: Números inteiros, por exemplo, 10, -5, 1000.
- **float**: Números com casas decimais, por exemplo, 3.14, -0.5.
- **string**: Sequência de caracteres, por exemplo, "Olá mundo!", 'PHP é divertido!'.
- **boolean**: Representa verdadeiro (`true`) ou falso (`false`).
- **null**: Representa a ausência de valor.
- **array**: Coleção de elementos, indexada numericamente.
- **object**: Instâncias de classes definidas pelo usuário.
- **resource**: Referência a recursos externos, como conexões de banco de dados ou manipuladores de arquivos.
- **callable**: Representa um objeto ou função que pode ser chamado.

### Operadores

PHP suporta diversos tipos de operadores:

- **Aritméticos**: `+` (adição), `-` (subtração), `*` (multiplicação), `/` (divisão), `%` (módulo).
- **De Comparação**: `==` (igual), `!=` (diferente), `>` (maior que), `<` (menor que), `>=` (maior ou igual), `<=` (menor ou igual).
- **Lógicos**: `&&` (E lógico), `||` (OU lógico), `!` (NÃO lógico).
- **De Atribuição**: `=` (atribuição simples), `+=` (adição com atribuição), `-=` (subtração com atribuição), `*=` (multiplicação com atribuição), `/=` (divisão com atribuição), entre outros.
- **De Incremento e Decremento**: `++` (incremento), `--` (decremento).
- **Ternário**: `condição ? valor_se_verdadeiro : valor_se_falso`.
- **Concatenador**: `.` (para concatenar strings).
- **Igualdade e Diferença Estritas**: `===` (igualdade estrita) e `!==` (diferença estrita).

Os operadores de igualdade estrita (`===`) e diferença estrita (`!==`) são usados para comparar tanto o valor quanto o tipo de dados de duas expressões. Isso significa que, ao usar `===`, as expressões devem ser idênticas em valor e tipo para que a comparação seja considerada verdadeira. Por outro lado, com `!==`, a comparação é verdadeira se as expressões tiverem valores ou tipos diferentes. Esses operadores são importantes quando é necessário garantir que tanto o valor quanto o tipo sejam levados em consideração durante as comparações.

### Variáveis

As variáveis em PHP são precedidas pelo símbolo de dólar `$` e podem ser definidas dinamicamente sem a necessidade de declarar um tipo. Veja um exemplo:

```php
$nome = "João";
$idade = 25;
```

### Estruturas de Controle:

As estruturas de controle em PHP são muito similares a outras linguagens de programação do tipo C-like, como JavaScript. Elas permitem que você controle o fluxo do programa. As principais estruturas de controle são:

**IF, ELSEIF e ELSE:**

```php
$idade = 18;

if ($idade >= 18) {
    echo "Você é maior de idade.";
} elseif ($idade >= 16) {
    echo "Você é adolescente.";
} else {
    echo "Você é menor de idade.";
}
```

**FOR:**

```php
for ($i = 1; $i <= 5; $i++) {
    echo "Número: " . $i . "\n";
}
```

**WHILE:**

```php
$i = 1;
while ($i <= 5) {
    echo "Número: " . $i . "\n";
    $i++;
}
```

**DO-WHILE:**

```php
$i = 1;
do {
    echo "Número: " . $i . "\n";
    $i++;
} while ($i <= 5);
```

### Arrays e Arrays Associativos

Arrays são coleções de elementos que podem ser indexados numericamente iniciando no `0`, assim como em C ou JavaScript. Em PHP, os arrays podem ser criados usando a função array() ou a notação de colchetes [] a partir da versão 5.4. 

Dado o fato de que PHP é uma linguagem com tipagem dinâmica, os arrays podem ser mistos, ou seja, contendo elementos de diversos tipos de dados.

Veja um exemplo de array:

```php
$frutas = array("maçã", "banana", "laranja");
// [0] => "maçã" / [1] => "banana" / [2] => "laranja"
```

Além disso, os arrays em PHP podem ter chaves não numéricas. Esses arrays são chamados de arrays associativos, e são arrays onde cada elemento tem uma chave do tipo string associada. Veja um exemplo:

```php
$aluno = array("nome" => "Maria", "idade" => 20, "nota" => 9.5);
```

### Loop foreach

O loop foreach é especialmente útil para iterar sobre os elementos de um array. Ele percorre cada elemento do array e executa um bloco de código para cada elemento. Veja um exemplo:

```php
$frutas = array("maçã", "banana", "laranja");
foreach ($frutas as $fruta) {
    echo $fruta . "\n";
}

```

Isso produzirá a seguinte saída no terminal:

```
maçã
banana
laranja
```

No caso de arrays associativos, você pode acessar tanto a chave quanto o valor usando a seguinte sintaxe:

```php
$aluno = array("nome" => "Maria", "idade" => 20, "nota" => 9.5);
foreach ($aluno as $chave => $valor) {
    echo $chave . ": " . $valor . "\n";
}
```

Isso produzirá a seguinte saída no terminal:

```
nome: Maria
idade: 20
nota: 9.5
```

### Loops com dois pontos e end

Outra forma de escrever loops em PHP é delimitando o bloco de código do loop usando dois pontos (`:`) e `end[nome do loop]`. Essa forma torna o código mais legível quando se trabalha com blocos grandes de HTML que estão dentro do bloco do laço. Veja os exemplos:

```php
$frutas = array("maçã", "banana", "laranja");
for ($i = 0; $i < sizeof($frutas); $i++):
    echo $frutas[$i] . "\n";
endfor;
```

No caso de arrays associativos:

```php
$aluno = array("nome" => "Maria", "idade" => 20, "nota" => 9.5);
foreach ($aluno as $chave => $valor):
    echo $chave . ": " . $valor . "\n";
endforeach;
```

### Sintaxe Resumida do Echo

Para imprimir valores na saída, você também pode usar a sintaxe resumida do `echo`, utilizando `<?= $valor ?>`:

```php
$nome = "Maria";
echo "Olá, " . $nome . "!"; // Saída: Olá, Maria!
```

Pode ser escrito de forma mais concisa usando a sintaxe resumida:

```php
<?php
$nome = "Maria";
?>
Olá, <?= $nome ?>! <!-- Saída: Olá, Maria! -->
```

### Fim de Bloco de Código e Último Bloco de Código de um Arquivo

Em PHP, a última linha de um bloco de código não precisa de ponto e vírgula (`;`). Isso torna mais fácil adicionar ou remover linhas de código sem se preocupar com o ponto e vírgula na última linha.

Além disso, quando o arquivo PHP termina com um bloco de código, o último bloco de PHP não precisa ser fechado com `?>`. Essa prática é comum em arquivos que contêm apenas código PHP e não incluem HTML ou outras marcações. Deixar o último bloco sem o fechamento `?>` ajuda a evitar espaços em branco ou caracteres adicionais após o fechamento do PHP, o que poderia causar erros em determinadas situações.

### Intercambiando Códigos PHP com HTML

Uma das principais vantagens do PHP é a capacidade de intercambiar códigos PHP com HTML, permitindo a criação de páginas web dinâmicas, onde o conteúdo pode variar de acordo com as condições definidas no código PHP. Isso é especialmente útil quando se trabalha com estruturas de controle, como laços e instruções condicionais, que podem ser facilmente integradas ao HTML usando a sintaxe de dois pontos e `end`.

Vamos ver como podemos utilizar a sintaxe de dois pontos e `end` para intercalar estruturas de controle PHP com blocos de HTML.

#### Exemplo com laço FOREACH

Suponha que temos um array contendo alguns nomes de frutas e queremos exibi-los em uma lista não ordenada (`<ul>`) em nosso HTML:

```php
<?php
$frutas = array("maçã", "banana", "laranja");
?>
<ul>
<?php foreach ($frutas as $fruta): ?>
    <li><?= $fruta ?></li>
<?php endforeach ?>
</ul>
```

O laço `foreach` percorre o array `$frutas` e para cada elemento, o código HTML é gerado dentro do laço, exibindo cada fruta em um elemento `<li>` da lista não ordenada. Note também que aqui estamos usando o `endforeach` sem ponto-e-vírgula no final, já que ele é o último (e único) comando do bloco em questão. O mesmo acontece o bloco que escreve a variável `$fruta`

#### Exemplo de instrução condicional IF/ELSE

Suponha que temos uma variável `$idade` e queremos exibir uma mensagem personalizada com base na idade em nosso HTML:

```php
<?php
$idade = 25;
?>
<?php if ($idade >= 18): ?>
    <p>Você é maior de idade.</p>
<?php else: ?>
    <p>Você é menor de idade.</p>
<?php endif ?>
```

Neste exemplo, usamos a instrução condicional `if/else` para verificar se a idade é maior ou igual a 18. Dependendo do resultado, exibimos uma mensagem apropriada no HTML usando `<p>` (parágrafo).

Essa abordagem facilita a criação de páginas web dinâmicas, pois podemos incorporar lógica de programação PHP diretamente em nossos arquivos HTML. Dessa forma, podemos construir interfaces interativas que se adaptam a diferentes cenários e situações, proporcionando uma experiência mais personalizada e agradável aos usuários.

---

## Conclusão

Com isso, você já é capaz de construir scripts simples utilizando PHP e HTML (ou apenas texto puro, se assim desejar) e executá-los no terminal para ver os resultados.

A seguir, vamos falar sobre mais alguns recursos importantes da linguagem PHP e abordar questões relacionadas ao modelo cliente-servidor e o protocolo HTTP que são os fundamentos da Internet.