Cheatsheet PHP

Linguagem de programação web server-side

PHP
55 cards encontrados
Categorias:
Versões:

Básico


12 cards
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


9 cards
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


14 cards
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


1 card
Definir Funções
function sayHelloWorld() {
    echo "Hello World!";
}
sayHelloWorld(); // Outputs: Hello!

Funções & Objetos


1 card
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


11 cards
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:

  1. Orientado a objetos – o código fica mais organizado e fácil de manter.
  2. Prepared statements integrados – evita SQL Injection de forma consistente, sem necessidade de concatenar strings manualmente.
  3. Suporta múltiplos tipos de base de dados – MySQL, PostgreSQL, SQLite, entre outros.
  4. Tratamento de erros via exceções – mais fácil de capturar problemas e manter a aplicação segura.
  5. 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


2 cards
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


5 cards
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 $var dentro 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