Aide-mémoire PHP
Variables et Types
ObjectifExemple
Déclaration $nom = "Alice";
$age = 30;
$pi = 3.14;
$actif = true;
$vide = null;
Connaître le type gettype($var)        // "string", "integer", "array"...
is_string($var) / is_int($var) / is_array($var) / is_null($var)
Conversion de type (cast) (int)"42"          // 42
(string)42         // "42"
(bool)0            // false
(array)"hello"     // ["hello"]
intval($str) / strval($n) / floatval($str)
Constantes define('VERSION', '2.0');
const APP_NAME = 'MonSite';  // dans une classe ou fichier
echo VERSION;                // 2.0
Variables variables $cle = 'nom';
$$cle = 'Alice';  // équivalent à $nom = 'Alice'
isset / empty / unset isset($var)     // true si définie et !== null
empty($var)     // true si '', 0, [], null, false
unset($var)     // supprime la variable
Fonctions Chaînes de Caractères
Concaténation et interpolation $s = "Bonjour " . $nom;
$s = "Bonjour {$nom}";  // double-quote
$s = 'Bonjour ' . $nom; // single-quote : pas d'interpolation
Longueur / recherche strlen($s)              // longueur
strpos($s, 'mot')       // position (false si absent)
strrpos($s, 'mot')      // dernière occurrence
str_contains($s, 'mot') // PHP 8 : bool
str_starts_with($s, 'B') // PHP 8 : bool
str_ends_with($s, 'r')  // PHP 8 : bool
Modification strtolower($s)       // minuscules
strtoupper($s)       // majuscules
ucfirst($s)          // 1re lettre en majuscule
ucwords($s)          // 1re lettre de chaque mot
trim($s)             // suppr. espaces début/fin
ltrim($s) / rtrim($s) // gauche / droite seulement
str_replace('a','b',$s) // remplacer
str_pad($s, 10, '-')  // compléter à 10 chars
str_repeat('ab', 3)     // "ababab"
str_word_count($s)      // nombre de mots
wordwrap($s, 75, "\n")  // couper à 75 chars
Extraction / découpage substr($s, 0, 5)         // 5 premiers chars
substr($s, -3)           // 3 derniers chars
explode(',', $s)         // tableau depuis séparateur
implode(', ', $tableau)  // tableau → chaîne
chunk_split($s, 4, '-')  // insérer '-' tous les 4 chars
preg_split('/\s+/', $s)  // découper par regex
Formatage sprintf("%.2f", 3.14159)   // "3.14"
sprintf("%05d", 42)        // "00042"
number_format(1234.5, 2, ',', ' ') // "1 234,50"
printf("Bonjour %s, tu as %d ans", $nom, $age);
Échappement / HTML htmlspecialchars($s)        // < > & → entités
htmlspecialchars_decode($s) // inverse
strip_tags($s)              // supprimer les tags HTML
nl2br($s)                   // \n → <br/>
Hachage et encodage md5($s) / sha1($s)                // non sécurisés
password_hash($s, PASSWORD_BCRYPT)  // sécurisé
password_verify($s, $hash)          // vérifier
base64_encode($s) / base64_decode($s)
urlencode($s) / urldecode($s)
Regex preg_match('/^\d+$/', $s)              // tester
preg_match('/(\d+)/', $s, $matches)    // capturer
preg_replace('/\s+/', ' ', $s)          // remplacer
preg_match_all('/\d+/', $s, $matches)   // toutes les occurrences
Fonctions Tableaux (Arrays)
Création $a = [1, 2, 3];                      //indexé
$a = ['nom' => 'Alice', 'age' => 30];  //associatif
$a = [[1,'a'],[2,'b']];               //multidimensionnel
range(1, 10)                         // [1,2,...,10]
array_fill(0, 5, 'x')               // ['x','x','x','x','x']
Ajout / Suppression $a[] = 4;                    // ajouter à la fin
array_push($a, 4, 5);          // ajouter plusieurs à la fin
array_unshift($a, 0);          // ajouter au début
array_pop($a);                 // supprimer le dernier
array_shift($a);               // supprimer le premier
unset($a[2]);                  // supprimer par clé
array_splice($a, 1, 2);        // supprimer 2 élém. depuis index 1
Recherche / Vérification in_array('Alice', $a)           // bool
array_key_exists('nom', $a)     // bool
isset($a['nom'])                 // bool (plus rapide)
array_search('Alice', $a)        // retourne la clé ou false
count($a)                        // nombre d'éléments
Transformation array_map(fn($x) => $x * 2, $a)        // appliquer fonction
array_filter($a, fn($x) => $x > 2)      // filtrer
array_reduce($a, fn($c,$x) => $c+$x, 0) // réduire
array_unique($a)                        // valeurs uniques
array_flip($a)                          // inverser clés/valeurs
array_reverse($a)                        // inverser l'ordre
array_chunk($a, 3)                       // découper en morceaux de 3
array_column($rows, 'nom')               // extraire une colonne
Tri sort($a)               // tri croissant (réindexe)
rsort($a)              // tri décroissant
asort($a)              // tri croissant (garde clés)
arsort($a)              // tri décroissant (garde clés)
ksort($a)              // tri par clé
usort($a, fn($a,$b) => $a - $b)  // tri personnalisé
Fusion / Extraction array_merge($a, $b)           // fusion (réindexe numériques)
array_merge_recursive($a, $b)   // fusion récursive
$a + $b                         // union (garde les clés de $a)
array_slice($a, 1, 3)           // extraire sous-tableau
array_diff($a, $b)              // éléments dans $a mais pas $b
array_intersect($a, $b)         // éléments communs
array_combine($keys, $values)   // fusionner clés + valeurs
compact('nom','age')            // variables → tableau assoc
extract($assoc)                 // tableau assoc → variables
Clés / Valeurs array_keys($a)      // tableau des clés
array_values($a)    // tableau des valeurs (réindexé)
min($a) / max($a)   // min / max des valeurs
array_sum($a)       // somme
array_product($a)   // produit
Dates et Heures
Fonctions de base date('Y-m-d')              // "2026-02-22"
date('d/m/Y H:i:s')        // "22/02/2026 14:30:00"
time()                      // timestamp Unix
mktime(14,30,0,2,22,2026)  // timestamp depuis date
strtotime('2026-02-22')    // chaîne → timestamp
strtotime('+1 month')      // calcul relatif
DateTime (OOP) $d = new DateTime();                      // maintenant
$d = new DateTime('2026-01-01');
$d->format('d/m/Y');                    // formater
$d->modify('+7 days');                  // ajouter 7 jours
$diff = $d1->diff($d2);                 //différence
echo $diff->days . ' jours';
$d = DateTime::createFromFormat('d/m/Y', '22/02/2026');
Fonctions
Déclaration function saluer(string $nom, int $age = 0): string {
    return "Bonjour {$nom}, tu as {$age} ans";
}
Fonctions anonymes / closures $double = function($x) { return $x * 2; };
$double = fn($x) => $x * 2;    // arrow function PHP 7.4+
$carre = fn($x) => $x ** 2;
Fonctions variadiques function somme(int ...$nombres): int {
    return array_sum($nombres);
}
somme(1, 2, 3, 4);  // 10
Spread operator $nums = [2, 3];
somme(1, ...$nums, 4);  // 10
Callable / call_user_func call_user_func('strtolower', 'HELLO'); // "hello"
call_user_func_array('implode', [', ', $a]);
array_map('strtolower', $tableau);
Structures de Contrôle
Match (PHP 8) $statut = match($code) {
    200 => 'OK',
    404 => 'Non trouvé',
    500 => 'Erreur serveur',
    default => 'Inconnu',
};
Null coalescing $val = $a ?? 'défaut';        // $a si non-null, sinon 'défaut'
$val = $a ?? $b ?? 'défaut';   // chaîne de null coalescing
$a ??= 'défaut';              // assigner si null (PHP 7.4+)
Opérateur ternaire $res = ($age >= 18) ? 'majeur' : 'mineur';
$res = $val ?: 'par défaut';  // false/null/0/"" → 'par défaut'
Boucles foreach ($tableau as $valeur) { ... }
foreach ($assoc as $cle => $valeur) { ... }
for ($i = 0; $i < 10; $i++) { ... }
while ($condition) { ... }
do { ... } while ($condition);
list($a, $b) = [1, 2];  // déstructuration
[$a, $b] = [1, 2];      // PHP 7.1+
Gestion des exceptions try {
    throw new InvalidArgumentException("Erreur");
} catch (InvalidArgumentException $e) {
    echo $e->getMessage();
} catch (Exception $e) {
    echo $e->getMessage();
} finally {
    // toujours exécuté
}
PDO - Base de Données
Connexion $pdo = new PDO(
    'mysql:host=localhost;dbname=mabase;charset=utf8mb4',
    'utilisateur',
    'motdepasse',
    [
        PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
        PDO::ATTR_EMULATE_PREPARES   => false,
    ]
);
Requête SELECT // Requête préparée (paramètres nommés)
$stmt = $pdo->prepare("SELECT * FROM users WHERE age > :age AND actif = :actif");
$stmt->execute([':age' => 18, ':actif' => 1]);
$rows = $stmt->fetchAll();             // tableau de toutes les lignes
$row = $stmt->fetch();                // une seule ligne
$val = $stmt->fetchColumn();          // une seule valeur
$nb = $stmt->rowCount();             // nombre de lignes
Requête INSERT / UPDATE / DELETE $stmt = $pdo->prepare("INSERT INTO users (nom, email) VALUES (:nom, :email)");
$stmt->execute([':nom' => 'Alice', ':email' => 'alice@ex.com']);
$id = $pdo->lastInsertId();  // ID de l'insert

$stmt = $pdo->prepare("UPDATE users SET nom = ? WHERE id = ?");
$stmt->execute(['Bob', 5]);
$stmt->rowCount();           // lignes affectées
Transactions $pdo->beginTransaction();
try {
    $pdo->exec("UPDATE comptes SET solde = solde - 100 WHERE id = 1");
    $pdo->exec("UPDATE comptes SET solde = solde + 100 WHERE id = 2");
    $pdo->commit();
} catch (Exception $e) {
    $pdo->rollBack();
}
Modes de fetch PDO::FETCH_ASSOC    // tableau associatif [ 'col' => 'val' ]
PDO::FETCH_OBJ      // objet stdClass
PDO::FETCH_CLASS    // instancie une classe
PDO::FETCH_NUM      // tableau numérique
PDO::FETCH_BOTH     // assoc + numérique
Sessions et Cookies
Sessions session_start();                      // démarrer la session
$_SESSION['user'] = 'Alice';           // stocker
echo $_SESSION['user'];                // lire
unset($_SESSION['user']);              // supprimer une clé
session_destroy();                    // tout détruire
session_regenerate_id(true);           // regénérer l'ID (sécurité)
Cookies // setcookie(nom, valeur, expire, path, domain, secure, httponly)
setcookie('token', 'abc123', time()+3600*24*30, '/', '', true, true);
echo $_COOKIE['token'];  // lire
setcookie('token', '', time()-1);    // supprimer
Filtres et Validation
filter_var filter_var($email, FILTER_VALIDATE_EMAIL)   // false si invalide
filter_var($url, FILTER_VALIDATE_URL)
filter_var($ip, FILTER_VALIDATE_IP)
filter_var($n, FILTER_VALIDATE_INT)
filter_var($n, FILTER_VALIDATE_FLOAT)
filter_var($s, FILTER_SANITIZE_STRING)    // nettoyage
filter_var($html, FILTER_SANITIZE_SPECIAL_CHARS)
filter_var($n, FILTER_SANITIZE_NUMBER_INT)
filter_var($url, FILTER_SANITIZE_URL)

// Avec options
filter_var($n, FILTER_VALIDATE_INT, ['options'=>['min_range'=>1, 'max_range'=>100]])
Récupérer les entrées proprement $nom = filter_input(INPUT_POST, 'nom', FILTER_SANITIZE_SPECIAL_CHARS);
$email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);
$page = filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT) ?: 1;
Programmation Orientée Objet (PHP 8)
Classe de base class Animal {
    public string $nom;
    protected int $age;
    private string $secret;

    // Constructor promotion (PHP 8)
    public function __construct(
        public string $espece,
        protected int $pattes = 4
    ) {}

    public function parler(): string { return "..."; }
    public static function creer(): static { return new static(); }
}
Héritage / Interface / Abstract interface Nageur { public function nager(): void; }

abstract class Vertebre {
    abstract public function respirer(): string;
}

class Chien extends Vertebre implements Nageur {
    public function respirer(): string { return "poumons"; }
    public function nager(): void { echo "je nage"; }
}
Traits trait Loggable {
    public function log(string $msg): void { echo "[LOG] {$msg}"; }
}
class Service {
    use Loggable;  // inclure le trait
}
Enum (PHP 8.1) enum Statut: string {
    case Actif = 'actif';
    case Inactif = 'inactif';
}
$s = Statut::Actif;
echo $s->value;     // "actif"
Statut::from('actif');       // Statut::Actif
Statut::tryFrom('inconnu');  // null
Méthodes magiques __construct() / __destruct()  // création / destruction
__toString()                  // cast en chaîne
__get($name) / __set($name, $val)  // propriétés dynamiques
__call($name, $args)          // méthodes inexistantes
__invoke($arg)                // $obj() comme fonction
__clone()                     // après clone $obj
Gestion des Fichiers
Lecture / Écriture file_get_contents('fichier.txt')                // tout en chaîne
file_put_contents('fichier.txt', $contenu)      // écrire (écrase)
file_put_contents('fichier.txt', $ligne, FILE_APPEND) // ajouter
file('fichier.txt')                            // tableau de lignes

// Mode bas niveau
$f = fopen('fichier.txt', 'r');  // r / w / a / r+ / w+
while (($ligne = fgets($f)) !== false) { ... }
fwrite($f, "nouveau contenu");
fclose($f);
Informations et manipulation file_exists('fichier.txt')     // bool
is_file() / is_dir() / is_readable() / is_writable()
filesize('fichier.txt')        // taille en octets
filemtime('fichier.txt')       // timestamp modification
basename('/chemin/fichier.php') // "fichier.php"
dirname('/chemin/fichier.php')  // "/chemin"
pathinfo('fichier.php')        // [dirname, basename, extension, filename]
rename('ancien.txt', 'nouveau.txt');
copy('src.txt', 'dest.txt');
unlink('fichier.txt');          // supprimer
mkdir('nouveau-dossier', 0755, true);  // récursif
rmdir('dossier-vide');
glob('/var/www/*.php');         // liste de fichiers
JSON $json = json_encode($tableau, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
$tableau = json_decode($json, true);  // true → tableau assoc
$objet = json_decode($json);        // objet stdClass
json_last_error() === JSON_ERROR_NONE; // vérifier erreur
Upload de fichier // form : enctype="multipart/form-data"
$_FILES['monFichier']['name']
$_FILES['monFichier']['tmp_name']
$_FILES['monFichier']['size']
$_FILES['monFichier']['error']   // 0 = ok
move_uploaded_file($_FILES['monFichier']['tmp_name'], '/uploads/fichier.jpg');
Divers Utiles
Headers HTTP header('Location: /page.php');          // redirection
header('Content-Type: application/json'); // type JSON
header('HTTP/1.1 404 Not Found');
http_response_code(404);                 // coder plus simple
exit;                                    // toujours après header()
Commandes système exec('ls -la', $sortie, $code);  // commande + résultat dans $sortie
shell_exec('pwd');               // retourne la sortie
system('clear');                 // affiche directement
passthru('cat fichier.txt');     // binaire brut
Constantes utiles PHP_EOL          // \n sous Linux, \r\n sous Windows
PHP_INT_MAX      // entier max
PHP_VERSION      // ex: "8.2.0"
DIRECTORY_SEPARATOR // / ou \
__FILE__         // chemin complet du fichier courant
__DIR__          // répertoire du fichier courant
__LINE__         // numéro de ligne courante
__FUNCTION__     // nom de la fonction courante
__CLASS__        // nom de la classe courante
Mathématiques abs(-5)                 // 5
ceil(4.2)                // 5
floor(4.8)               // 4
round(4.56, 1)           // 4.6
pow(2, 10)               // 1024
sqrt(16)                 // 4
rand(1, 100)             // entier aléatoire
mt_rand(1, 100)          // plus rapide
random_int(1, 100)       // cryptographiquement sûr
fmod(10, 3)              // modulo float
intdiv(10, 3)            // division entière