Aide-mémoire PHP
| Variables et Types |
| Objectif | Exemple |
| 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 |