Cheatsheet PHP
Linguagem de programação web server-side
PHP
Básico
Abrir o PHP
<?php // O teu código PHP aqui ?>
Usa <?php ... ?> para começar e terminar o código PHP dentro de ficheiros .php
Concatenar Strings
$nome = "Cláudio"; echo "Olá " . $nome;
Usa . (ponto) para juntar strings.
Tipos básicos de variáveis
String → "texto"
Inteiro → 123
Float → 3.14
Boolean → true / false - 0 / 1
Array → ["a", "b", "c"]
Tag curta de saída
// Short syntax for PHP echo <?= "Hello World" ?>
Crias um echo ao fazeres <?= este atalho é chamado de "short echo tag"
Superglobais básicas
$_GET → parâmetros da URL
$_POST → dados de formulários
$_SERVER → info do servidor
$_SESSION → sessão do utilizador
$_COOKIE → cookies do utilizador
Variáveis
$nome = "Joaquim"; $idade = 30;
As variáveis começam sempre com $. Tipagem dinâmica (não precisas declarar o tipo). 2
Comentários
<?php
// Uma unica linha
# Outra linha
/* Isto é um
Comentário
multi-linha
*/
?>
É importante usar os comentários para relembrar o que foi feito, ou documentar o código.
Tipos de Variáveis
Principais tipos de dados em PHP e como utilizá-los.Tipos principais:
- String: Texto entre aspas
- Integer: Números inteiros
- Float: Números com decimais
- Boolean: true ou false
- Array: Coleção de valores
- Null: Valor vazio
Include / Require
Para separar ficheiros e oganizar o teu código:
include "header.php"; require "config.php";
require dá erro fatal se o ficheiro não existir, include só avisa.
Sintaxe Básica
<?php
echo "Olá Mundo!";
print "Olá Mundo!";
?>
O echo e o print mostram texto no ecrã. No entato o echo é um pouco mais rápido, print retorna 1. As instruções terminam com ;
Estruturas de controlo
if ($idade >= 18) {
echo "Maior de idade";
} else {
echo "Menor de idade";
}
SE (if) → “Se isto for verdade, faz tal coisa…”
SENÃO (else) → “…caso contrário, faz outra coisa.”
Funcionamento do Boolean
$boolean1 = true; $boolean2 = TRUE; $boolean3 = false; $boolean4 = FALSE; $boolean5 = (boolean) 1; // true $boolean6 = (boolean) 0; // false
O Boolean é case-insensitive
Números & Datas
Funçoes matemáticas
Arredondar Número - Arredonda para o inteiro mais próximo.
echo round(0.80); // 1
Arredondar com Precisão - Segundo parâmetro define as casas decimais.
echo round(1.49356, 2); // 1.49
Arredondar Número - Arredonda para cima
echo ceil(1.2); // ex: 2
Arredondar Número - Arredonda para baixo
echo floor(1.8); // ex: 1
Operações Matemáticas Básicas
$a = 10; $b = 3; echo $a + $b; // 13 echo $a - $b; // 7 echo $a * $b; // 30 echo $a / $b; // 3.3333 echo $a % $b; // 1 (resto da divisão)
Operações aritméticas básicas: soma, subtração, multiplicação, divisão e resto.
Números aleatórios
Número aleatório - Gera um número inteiro entre os limites dados.
echo rand(10, 100); // ex: 89
Constantes matemáticas
echo pi(); // 3.14159265359 echo M_PI; // também retorna pi
Constantes úteis para cálculos matemáticos, como π.
Formatar números
$numero = 1234.5678; echo number_format($numero, 2); // 1,234.57
Formata números com casas decimais e separadores, útil para exibir valores.
Data atual
echo date("Y-m-d H:i:s"); // 2025-09-26 00:00:00
Mostra a data e hora atuais no formato desejado usando date().
Criar timestamp
$ts = strtotime("2025-12-31 23:59:59");
echo $ts;
Converte uma string de data/hora para timestamp UNIX (segundos desde 1970).
Formatar datas
$ts = strtotime("2025-12-31");
echo date("d/m/Y", $ts); // 31/12/2025
Formata um timestamp ou data em qualquer padrão desejado.
Manipulação com DateTime
$date = new DateTime('2025-12-31 23:59:59');
$date->modify('+1 day');
echo $date->format('Y-m-d'); // 2026-01-01
Classe DateTime para manipulação avançada de datas: somar, subtrair, comparar, etc.
Controlo de Fluxo
if / elseif / else
if ($idade < 13) {
echo "Criança";
} elseif ($idade < 18) {
echo "Adolescente";
} else {
echo "Adulto";
}Executa o bloco de código se a condição do if for verdadeira. Se não for, testa outras condições com elseif. Se nenhuma condição for satisfeita, o else executa o bloco final, garantindo que alguma ação acontece.
Comparações de Igualdade
$x == $y // Igual → (Ex.: 5 == "5" dá true)
Verdadeiro se $x e $y têm o mesmo valor, mesmo que os tipos sejam diferentes.
$x === $y // Idêntico → (Ex.: 5 === "5" dá false, mas 5 === 5 dá true)
Verdadeiro se $x e $y têm o mesmo valor e o mesmo tipo.
$x != $y ou $x <> $y // Diferente → (!= e <> fazem exatamente a mesma coisa).
Verdadeiro se $x e $y não têm o mesmo valor.
$x !== $y // Não idêntico → (Ex.: 5 !== "5" dá true).
Verdadeiro se $x e $y não têm o mesmo valor ou não são do mesmo tipo.
Comparações Numéricas
$x > $y // Maior que
Verdadeiro se $x for maior que $y.
$x < $y // Menor que
Verdadeiro se $x for menor que $y.
$x >= $y // Maior ou igual
Verdadeiro se $x for maior ou igual a $y.
$x <= $y // Menor ou igual
Verdadeiro se $x for menor ou igual a $y.
for
for ($i = 0; $i < 5; $i++) {
echo $i;
}
Repete o bloco de código um número específico de vezes, útil quando sabemos exatamente quantas iterações queremos.
while
$i = 0;
while ($i < 5) {
echo $i;
$i++;
}
Repete o bloco de código enquanto a condição for verdadeira, útil quando não sabemos quantas vezes será necessário executar.
do…while
$i = 0;
do {
echo $i;
$i++;
} while ($i < 5);
Garante que o bloco de código é executado pelo menos uma vez e depois verifica a condição para continuar.
Operador Null Coalescing Assignment ??=
$nome ??= "Visitante"; echo $nome;
Só atribui o valor à direita se a variável à esquerda não estiver definida ou for null. É uma forma ainda mais curta de escrever if (!isset($nome)) $nome = "Visitante";. Apenas disponível na versão (PHP 7.4+)
switch
$dia = 3;
switch ($dia) {
case 1: echo "Segunda"; break;
case 2: echo "Terça"; break;
case 3: echo "Quarta"; break;
default: echo "Outro dia";
}
Compara uma variável com vários valores possíveis e executa o bloco correspondente. O default é usado se nenhum caso for verdadeiro.
break
for ($i = 0; $i < 10; $i++) {
if ($i == 5) break;
echo $i;
}
Sai imediatamente do loop, interrompendo a execução do ciclo atual.
Operadores Condicionais & Null Coalescing
$idade = 18; $status = ($idade >= 18) ? "Adulto" : "Menor"; echo $status; // Adulto
Forma compacta do if/else.
Se a condição antes do ? for verdadeira, retorna o valor antes dos :; caso contrário, retorna o valor depois do :.
foreach
$cores = ['vermelho', 'verde', 'azul'];
foreach ($cores as $cor) {
echo $cor;
}
Percorre todos os elementos de um array, executando o bloco de código para cada item.
continue
for ($i = 0; $i < 5; $i++) {
if ($i == 2) continue;
echo $i;
}
Pula a iteração atual e passa para a próxima do loop, útil para ignorar certas condições sem terminar o ciclo inteiro.
Operador Null Coalescing ??
$nome = $_GET['nome'] ?? "Visitante"; echo $nome;
Retorna o valor à esquerda se existir e não for null, caso contrário retorna o valor à direita. Muito útil para valores opcionais ou variáveis que podem não estar definidas.
Operador Elvis ?: (variante do ternário)
$nome = $nomeInput ?: "Visitante";
Retorna a variável à esquerda se for verdadeira, caso contrário retorna o valor à direita. É útil para valores padrão rápidos sem escrever a condição completa.
Coleções
Definir Funções
function sayHelloWorld() {
echo "Hello World!";
}
sayHelloWorld(); // Outputs: Hello!
Funções & Objetos
Tipos de loops
for: Quando sabemos quantas vezes repetir
while: Enquanto uma condição for verdadeira
foreach: Para percorrer arrays
continue: Pula para próxima iteração
Switch: Percorre várias condições a comparar com a mesma variável
break: Sai do loop completamente
Base de Dados & Segurança
Conexão simples à base de dados
$dbc = mysqli_connect(HOST, USER, PW, DB);
if (!$dbc) {
die("Erro ao conectar: " . mysqli_connect_error());
}
A função mysqli_connect() cria a ligação com a base de dados. Esta é a versão mais simples de conexão à DB, mas é seguro usar a versão PDO
Executar uma query
$result = mysqli_query($dbc, $query);
if (!$result) {
die("Erro na query: " . mysqli_error($dbc));
}
A função mysqli_query() envia a query para a base de dados.
Fechar a conexão à base de dados
Fechar no modo Procedural:
mysqli_close($dbc);
Fechar no modo PDO:
$pdo = null;
Isto liberta recursos e termina a ligação à base de dados.
Preparação de querys precedurais
$stmt = mysqli_prepare($dbc, "SELECT * FROM users WHERE id = ?"); mysqli_stmt_bind_param($stmt, "i", $id); mysqli_stmt_execute($stmt);
Evita concatenar variáveis na query. Usa sempre prepared statements para prevenir SQL Injection
O método procedural para aceder à base de dados funciona, mas PDO é mais flexível e orientado a objetos
Conexão à base de dados por PDO
try {
$pdo = new PDO("mysql:host=localhost;dbname=test", "user", "pass");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
die("Erro: " . $e->getMessage());
}
Cria uma conexão à base de dados MySQL usando PDO (PHP Data Objects). Configura para lançar exceções em caso de erro, evitando falhas silenciosas.
Queries Preparadas
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = :id");
$stmt->execute(['id' => $id]);
Evita SQL Injection. Os parâmetros são ligados à query de forma segura antes de executar.
No SQL Injection o atacante consegue injetar código SQL malicioso nos formulários ou URLs para manipular a base de dados.
Porquê PDO
Embora o metodo precedural seja suficiente para aplicações simples, o PDO é mais seguro e flexível, principalmente por estes motivos:
- Orientado a objetos – o código fica mais organizado e fácil de manter.
- Prepared statements integrados – evita SQL Injection de forma consistente, sem necessidade de concatenar strings manualmente.
- Suporta múltiplos tipos de base de dados – MySQL, PostgreSQL, SQLite, entre outros.
- Tratamento de erros via exceções – mais fácil de capturar problemas e manter a aplicação segura.
- Portabilidade – se mudares de base de dados, o código PDO muda muito pouco; com mysqli procedural, terias de refazer grande parte.
Então, para aplicações modernas e seguras, PDO é preferível.
Escapar Dados
htmlspecialchars($input);
Converte caracteres especiais em HTML, prevenindo ataques XSS (Cross-Site Scripting), evitando um atacante conseguir injetar código JavaScript malicioso nas páginas.
Password Hash
hash = password_hash($senha, PASSWORD_DEFAULT);
Gera um hash seguro da senha para armazenar na base de dados.
Verificar Passwords
if (password_verify("senha123", $hash)) {
echo "Senha correta!";
} else {
echo "Senha incorreta!";
}
A função password_verify() recebe a senha em texto puro e o hash guardado, Retornando true se coincidir, ou false caso contrário.
Tipos de hashes
$hash = md5("senha123");
O Md5 produz 32 caracteres hexadecimais → Não seguro para passwords, usa apenas para verificações.
$sha1 = sha1("senha123");
O Sha1 produz 40 caracteres hexadecimais → Ainda não recomendados para passwords.
$sha256 = hash('sha256', 'senha123');
O Sha64 produz 64 caracteres hexadecimais → Ainda não recomendados para passwords. Muito útil para integridade de dados e gerar identificadores.
$hash = password_hash("senha123", PASSWORD_DEFAULT);
O BCRYPT é recomendado para senhas e adiciona um salt automaticamente;
$hash_argon2 = password_hash("senha123", PASSWORD_ARGON2ID);
O ARGON2 é o mais adequado para gerar hashes de senhas, também adiciona um salt automaticamente e foi lançada a partir da versao 7.2.
Truques
Caracteres especiais de escape
\n → Quebra de linha
\r → Retorno de carro (volta ao início da linha, usado mais em Windows junto com \n)
\t → Tabulação horizontal (tab)
\v → Tabulação vertical
\e → Caractere de escape (pouco usado, controla sequências especiais)
\f → Alimentação de formulário (separador de página ou secção, usado em impressoras antigas)
\\ → Barra invertida
\$ → Sinal de dólar $
\' → Aspa simples '
\" → Aspa dupla "
Interpolação e concatenação
As aspas fazem interpolação da string
echo "Hello $name";
Já o ponto . faz a concatenação da string
echo 'Hello ' . $name;
Sem Categoria
Condicionais
Estruturas para tomar decisões no código baseadas em condições.
= 18) {
echo "Maior de idade";
}
// If-else
if ($idade >= 18) {
echo "Maior de idade";
} else {
echo "Menor de idade";
}
// If-elseif-else
if ($idade < 13) {
echo "Criança";
} elseif ($idade < 18) {
echo "Adolescente";
} else {
echo "Adulto";
}
// Operador ternário (forma compacta)
$status = ($idade >= 18) ? "adulto" : "menor";
// Switch (múltiplas opções)
$dia = "segunda";
switch ($dia) {
case "segunda":
case "terça":
echo "Início da semana";
break;
case "sexta":
echo "Fim da semana";
break;
default:
echo "Meio da semana";
}
// Null coalescing (verificar se existe)
$usuario = $_GET['user'] ?? 'anônimo';
?>
Operadores de comparação:
==Igual===Idêntico (mesmo tipo e valor)!=Diferente>,<,>=,<=Comparações numéricas
Incremento e Decremento
++$x // Pré-incremento → (Ex.: $x=5; echo ++$x; // 6).
Primeiro aumenta $x em 1, depois devolve o novo valor.
$x++ // Pós-incremento → (Ex.: $x=5; echo $x++; // 5, mas $x fica 6 depois).
Primeiro devolve o valor atual de $x, só depois aumenta em 1.
--$x // Pré-decremento → (Ex.: $x=5; echo --$x; // 4).
Primeiro diminui $x em 1, depois devolve o novo valor.
$x-- // Pós-decremento → (Ex.: $x=5; echo $x--; // 5, mas $x fica 4 depois).
Primeiro devolve o valor atual de $x, só depois diminui em 1.
Loops
Estruturas para repetir código múltiplas vezes.
"João", "idade" => 30];
foreach ($pessoa as $chave => $valor) {
echo "$chave: $valor\n";
}
// Foreach com índice
foreach ($frutas as $indice => $fruta) {
echo "$indice: $fruta\n";
}
// Controle de fluxo
for ($i = 0; $i < 10; $i++) {
if ($i == 3) continue; // Pula para próxima iteração
if ($i == 7) break; // Sai do loop
echo $i;
}
?>
Tipos de loops:
- for: Quando sabemos quantas vezes repetir
- while: Enquanto uma condição for verdadeira
- foreach: Para percorrer arrays
- continue: Pula para próxima iteração
- break: Sai do loop completamente
Strings
Operações essenciais para trabalhar com texto em PHP.
Operações comuns:
- Concatenar: Usar
.para juntar - Interpolar: Usar
$vardentro de aspas duplas - Dividir:
explode()para separar - Substituir:
str_replace()para trocar texto
Arrays
Estruturas de dados para armazenar múltiplos valores.
"João",
"idade" => 30,
"cidade" => "Lisboa"
];
// Array multidimensional
$matriz = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
// Acessar elementos
echo $frutas[0]; // "maçã"
echo $pessoa["nome"]; // "João"
echo $matriz[1][2]; // 6
// Adicionar elementos
$frutas[] = "uva";
array_push($frutas, "pêra");
$pessoa["email"] = "joao@email.com";
// Funções úteis
count($frutas); // Tamanho do array
in_array("maçã", $frutas); // Verificar se existe
array_keys($pessoa); // Obter chaves
array_values($pessoa); // Obter valores
?>
Tipos de arrays:
- Indexado: Usa números como chave (0, 1, 2...)
- Associativo: Usa strings como chave ("nome", "idade"...)
- Multidimensional: Array dentro de array