Configuration et Environnement
La configuration principale de PHP est gérée dans le fichier php.ini.
| Directive | Usage recommandé | Description |
|---|---|---|
php.ini |
Configuration serveur | Fichier contenant les directives (clé=valeur). Peut parfois être surchargé via ini_set() dans le script. |
display_errors |
On (Dev) / Off (Prod) | Affiche les erreurs directement dans la sortie HTML. À désactiver absolument en production pour la sécurité. |
error_reporting |
E_ALL | Définit le niveau de rapport d'erreurs. Il est conseillé de tout reporter. |
memory_limit |
ex: 128M | Taille maximale de mémoire qu'un script peut consommer. |
max_execution_time |
ex: 30 | Durée maximale (en secondes) d'exécution d'un script. |
Variables, Constantes et Portée
| Concept | Exemple de code | Description et Usage |
|---|---|---|
| Règles de nommage | $ma_variable_valide = 1; |
|
| Portée des Variables (Scope) | |
Par défaut, les espaces ne se confondent pas :
|
| Constantes | |
Valeur immuable (ne peut être modifiée ni détruite). La portée d'une constante est globale : on la définit hors de toute fonction, mais on peut l'utiliser partout. Par convention, toujours en MAJUSCULES. |
Typage Avancé et Arrondis
PHP est un langage à typage dynamique mais permet le typage explicite (type hinting) et le mode strict.
| Notion | Exemple | Description |
|---|---|---|
| Mode Strict | |
Doit être la toute première ligne du fichier. Interdit la conversion implicite des types (jonglage) pour les appels de fonctions. |
| Déclaration de type | |
Permet de typer explicitement les paramètres et le retour des fonctions. |
| Valeurs "Falsy" | false, 0, 0.0, "0", "", null, [] |
Toutes ces valeurs sont évaluées à false dans un contexte booléen. Attention à la chaîne "0" ! |
Valeurs approchées et Conversion numérique
| Fonction / Cast | Exemple de code | Description |
|---|---|---|
(int) ou intval() |
|
Troncature / Casting : Convertit en entier en supprimant simplement la partie décimale (arrondi vers zéro). |
round() |
|
Arrondi classique : Arrondit à l'entier le plus proche. |
floor() |
|
Arrondi inférieur : Arrondit à l'entier inférieur (vers l'infini négatif). |
ceil() |
|
Arrondi supérieur : Arrondit à l'entier supérieur (vers l'infini positif). |
Superglobales
Les superglobales sont des variables prédéfinies par PHP (généralement des tableaux associatifs) utiles pour l'accès aux données HTTP et système. Leur portée est globale : elles sont accessibles partout.
| Superglobale | Description et Contenu |
|---|---|
$_SERVER |
Contient le contexte d'exécution du script courant : URI, méthode de la requête HTTP, domaine, adresses IP du client et du serveur, DocumentRoot, etc. |
$_GET |
Contient les valeurs passées dans les paramètres de l'URL (la query string). Ex: ?id=5&lang=fr. |
$_POST |
Contient les valeurs passées dans le corps (body) d'une requête HTTP POST (typiquement lors de la soumission d'un formulaire). |
$_SESSION |
Contient les données de la session utilisateur courante (nécessite l'appel préalable à session_start()). |
⚠️ Sécurité : Il y a une nécessité absolue de valider et d'assainir systématiquement les données reçues depuis le client (GET et POST).
Manipulation Avancée (Strings & Arrays)
Chaînes de caractères (Strings)
| Fonction | Description |
|---|---|
mb_strlen()mb_substr() |
Versions "Multi-Byte" des fonctions standards. Indispensables pour gérer correctement les accents (UTF-8). |
explode()implode() |
explode : Coupe une chaîne en tableau selon un séparateur.implode : Rassemble un tableau en chaîne. |
trim() |
Supprime les espaces (ou autres caractères invisibles) au début et à la fin d'une chaîne. |
Tableaux (Arrays)
| Fonction | Description |
|---|---|
in_array()array_key_exists() |
Vérifie si une valeur existe. Vérifie si une clé existe. |
array_merge() |
Fusionne plusieurs tableaux. Les clés numériques sont renumérotées, les clés textuelles écrasent les précédentes si doublons. |
array_unique() |
Supprime les doublons d'un tableau. |
sort() |
Trie un tableau par valeur (et réindexe les clés numériques). |
Erreurs et Exceptions
Une erreur est une anomalie déclenchée par PHP. Une exception est un objet lancé volontairement pour signaler un cas exceptionnel à gérer (mécanisme de POO).
Bloc Try / Catch
try {
// Code susceptible de lancer une exception
if ($diviseur == 0) {
throw new Exception("Division par zéro interdite");
}
echo 10 / $diviseur;
} catch (Exception $e) {
// Gestion de l'erreur (interception)
echo "Erreur capturée : " . $e->getMessage();
// error_log($e->getMessage()); // Bonnes pratique : loguer l'erreur
} finally {
// Code exécuté dans tous les cas (optionnel)
}Types d'erreurs courants
| Type | Description |
|---|---|
E_PARSE / E_ERROR |
Erreurs fatales (syntaxe ou exécution). Le script s'arrête immédiatement. |
E_WARNING |
Avertissement. Le script continue mais il y a un dysfonctionnement certain. |
E_NOTICE |
Notification (ex: variable non définie). Le script continue. |
Gestion des Dates : Datetime vs Timestamp
Concepts Fondamentaux
| Concept | Description et Caractéristiques |
|---|---|
| Timestamp (Unix) |
Représentation numérique absolue d'un instant précis (le nombre de secondes écoulées depuis le 1er janvier 1970 à 00:00:00 UTC). Caractéristiques : Indépendant du fuseau horaire, idéal pour le calcul et le stockage interne. Illisible pour l'humain (ex: 1702737000).
|
| Datetime |
Représentation lisible d'un instant. Dépend d'un format et surtout d'un fuseau horaire (timezone). Caractéristiques : Orienté présentation. Le fuseau horaire de référence mondiale est l'UTC (Coordinated Universal Time). |
Approches de manipulation (POO vs Procédural)
| Action | Approche DateTime (POO - Recommandée) | Approche Procédurale (Timestamp) |
|---|---|---|
| Créer (Instant actuel) | $dt = new DateTime(); |
$ts = time(); |
| Parser une date (String) | $dt = new DateTime('2025-12-16 14:30:00'); |
$ts = strtotime('2025-12-16 14:30:00'); |
| Formater pour affichage | $valeur = $dt->format('d/m/Y H:i'); |
$valeur = date('d/m/Y H:i', $ts); |
Caractères de formatage courants
| Caractère | Signification | Exemple |
|---|---|---|
d / j | Jour du mois (sur 2 chiffres / sans zéro initial) | 05 / 5 |
m / n | Mois numérique (sur 2 chiffres / sans zéro initial) | 09 / 9 |
Y / y | Année (sur 4 chiffres / sur 2 chiffres) | 2025 / 25 |
H / G | Heures format 24h (sur 2 chiffres / sans zéro initial) | 14 / 14 |
i / s | Minutes / Secondes (sur 2 chiffres) | 30 / 05 |
Base de Données (PDO)
L'interface PDO (PHP Data Objects) permet d'accéder aux bases de données de manière sécurisée et uniforme, peu importe le SGBD sous-jacent.
Connexion (DSN)
try {
// DSN (Data Source Name)
$dsn = 'mysql:host=localhost;dbname=mon_site;charset=utf8mb4';
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // Mode d'erreur Strict
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC // Tableaux associatifs
];
$pdo = new PDO($dsn, 'utilisateur', 'mot_de_passe', $options);
} catch (PDOException $e) {
die("Erreur connexion : " . $e->getMessage());
}Requêtes Préparées (Protection Injection SQL)
Utilisez toujours des requêtes préparées (prepare() + execute()) quand vous injectez des variables externes.
// 1. Préparation avec marqueurs nommés (:email)
$stmt = $pdo->prepare("SELECT * FROM users WHERE email = :email");
// 2. Exécution avec les données
$email = $_POST['email'];
$stmt->execute(['email' => $email]);
// 3. Récupération (Fetch)
$user = $stmt->fetch(); // Récupère 1 enregistrement à la fois
// ou
$users = $stmt->fetchAll(); // Récupère tous les enregistrements d'un coup
if ($user) {
echo $user['nom'];
}Sécurité et Entrées/Sorties (I/O)
Validation et Assainissement
Règle d'or : Toute entrée dans un programme doit faire l'objet d'une validation et d'un assainissement.
| Fonction | Exemple | Description |
|---|---|---|
filter_var() |
|
Fonction native très puissante pour vérifier ou nettoyer des données (email, int, url...). |
htmlspecialchars() |
echo htmlspecialchars($str); |
Convertit les caractères spéciaux (comme < et >) en entités HTML. Indispensable à l'affichage de données utilisateur pour éviter les failles XSS. |
Gestion JSON
Format d'échange de données léger, massivement utilisé par les API web.
| Fonction | Description |
|---|---|
json_encode($data) |
Prend une variable PHP (ex: un tableau associatif) et retourne une chaîne de texte au format JSON. |
json_decode($json, true) |
Prend une chaîne JSON et la convertit en variable PHP. Le 2ème paramètre à true force le retour en tableau associatif (sinon c'est un objet stdClass). |