Cours PHP : Les bases en PDF (Intermédiaire)
PHP : Les bases : Ce qu'il faut savoir. PHP est un langage de script côté serveur, embarqué dans des pages HTML et interprété par un moteur PHP sur le serveur pour générer des scripts dynamiques et du HTML rendu côté client. Il s'intègre aux standards HTTP/HTML, gère les types de données et s'interconnecte facilement avec des bases de données ou des moteurs de template. Le langage permet également la génération de fichiers binaires (images, PDF) via des bibliothèques natives. Les exemples et bonnes pratiques présentés dans ce document de 15 pages restent applicables avec PHP 8.x et ses évolutions récentes.
Introduction au langage PHP et syntaxe de base
PHP (Hypertext Preprocessor) est un langage de script interprété côté serveur conçu pour produire du contenu dynamique intégré aux documents HTML. Il s'exécute via l'interpréteur PHP exposé par une SAPI (par exemple Apache mod_php, PHP-FPM) qui évalue les balises <?php ... ?> et retourne le flux HTTP résultant. Cette introduction rappelle la structure d'un script, la distinction entre code serveur et client, et les bonnes pratiques minimales pour écrire des scripts lisibles et sûrs.
🎯 Ce que vous allez apprendre
- Intégration serveur et balises PHP — comprendre le modèle d'exécution serveur-client et savoir pourquoi le code PHP reste invisible côté client. Identifier l'extension de fichier reconnue
.phpet utiliser correctement les balises de délimitation comme<?phpet?>pour garantir l'interprétation du script par le serveur. - Syntaxe et conventions héritées (C / Perl) — maîtriser les règles lexicales essentielles : séparateur d'instruction
;, styles de commentaires (/* */,//,#) et conventions de nommage sensibles à la casse pour une meilleure lisibilité et maintenance. - Opérateurs arithmétiques, de comparaison et logiques — utiliser
+,-,*,/, opérateurs de comparaison (==,===,!=,<,>) et opérateurs logiques (&&,||,!) pour contrôler le flux et effectuer des calculs. - Variables scalaires et typage dynamique — Identifier les types scalaires (entier, flottant, chaîne) et comprendre que le typage est déterminé par l'affectation. Manipuler des variables préfixées par
$et anticiper les conversions implicites lors d'opérations arithmétiques ou de concaténation. - Tableaux et parcours (array, tableaux associatifs, foreach) — créer des tableaux indexés ou associatifs avec
array()ou affectation directe, stocker des types hétérogènes et parcourir les éléments avecforeach ($tableau as $cle => $valeur)pour générer dynamiquement des listes et traiter des formulaires. - Portée, variables statiques et variables dynamiques — distinguer portée globale vs locale, utiliser
staticpour préserver l'état entre appels de fonctions et connaître le mécanisme des variables dynamiques ($$nom), avec ses limites en lisibilité et sécurité. - Constantes et affichage (define, echo/print/printf) — définir des constantes immuables avec
define()et produire de la sortie HTTP avececho,printetprintf. Séparer la génération de contenu de la logique applicative, utiliser des templates et appliquer des conseils de maintenance. Noter la concaténation de chaînes via l'opérateur.pour assembler du texte avant affichage. - Accès au système de fichiers — lecture/écriture de fichiers, gestion des permissions et bonnes pratiques pour éviter les failles liées aux uploads et chemins arbitraires.
📑 Sommaire du document
- Introduction et historique
- Syntaxe de base
- Gestion des variables
- Opérateurs et structures
- Tableaux et boucles
- Fonctions d'affichage
Installation de l'environnement PHP
Pour exécuter des scripts côté serveur, installez un serveur local. Des packs comme WAMP, XAMPP ou MAMP fournissent un serveur HTTP, PHP et un gestion de bases de données prêt à l'emploi, facilitant le développement sur poste local. Après installation, placez vos fichiers .php dans le répertoire de travail du serveur et accédez-y via http://localhost. Ces environnements permettent de tester les scripts, d'activer des extensions et de configurer les paramètres PHP sans déployer sur un serveur distant. Vous pouvez également ajuster le fichier php.ini pour activer des extensions ou modifier des paramètres (par exemple memory_limit, display_errors) selon les besoins de développement.
Interaction avec les bases de données
PHP communique fréquemment avec MySQL pour stocker et récupérer des données. Deux approches courantes sont l'extension mysqli et l'interface PDO, cette dernière offrant un accès orienté objet et la possibilité de changer de moteur sans réécrire la logique. Utilisez des requêtes préparées et le binding de paramètres pour prévenir les injections SQL et améliorer la sécurité. Cette section présente les principes de connexion, d'exécution de requêtes et de gestion des résultats avec MySQL.
Concepts fondamentaux et types de données
Les opérateurs constituent la base des traitements : les opérateurs arithmétiques effectuent des calculs numériques (+, -, *, /), les opérateurs de comparaison évaluent des relations entre valeurs (==, ===, <, >) et les opérateurs logiques combinent des conditions (&&, ||, !). Leur comportement avec le typage dynamique influence le résultat des expressions et doit être anticipé, notamment lors d'opérations mêlant nombres et chaînes. Les fonctions natives de manipulation de texte (strlen, strpos, etc.) aident à valider et transformer les chaînes avant traitement.
Gestion des erreurs et exceptions
PHP supporte les exceptions via try/catch pour capturer et traiter les erreurs contrôlées ; privilégier les exceptions aux erreurs fatales pour améliorer la robustesse. Pour les erreurs non-exceptionnelles, set_error_handler() et la configuration des niveaux d'erreurs dans php.ini permettent un contrôle fin en développement vs production.
<?php
try {
$pdo = new PDO($dsn, $user, $pass);
// opérations
} catch (PDOException $e) {
error_log($e->getMessage());
echo "Erreur lors de la connexion.";
}
?>
Manipulation des chaînes de caractères
Les fonctions natives facilitent le traitement des chaînes : strlen() retourne la longueur d'une chaîne en octets (préférer mb_strlen() pour les encodages multioctets comme UTF‑8), tandis que strpos() recherche la position d'une sous‑chaîne et renvoie un entier (0, 1, ...) ou false si la sous‑chaîne est absente — comparer strictement avec === permet de distinguer une position zéro d'une valeur false. Ces outils sont essentiels pour valider, découper, normaliser et assainir les entrées avant stockage ou affichage.
Les types de données en PHP
Types scalaires :
- boolean — valeurs
true/false. - integer — entiers, dépendants de l'architecture (32/64 bits).
- float — nombres à virgule flottante.
- string — séquences de caractères, délimitées par guillemets simples ou doubles.
Types composés :
- array — tableaux indexés ou associatifs pouvant contenir plusieurs types.
- object — instances de classes ; un objet encapsule propriétés et méthodes et sert à modéliser des entités logicielles. Les classes définissent le comportement, les méthodes exécutent des actions et les propriétés conservent l'état. L'utilisation d'objets facilite l'organisation du code et la réutilisabilité, introduisant la programmation orientée objet de manière pratique.
Autres types : resource pour les ressources externes et null pour l'absence de valeur. Comprendre ces distinctions facilite le débogage, la validation des données et la prévention d'erreurs liées aux conversions implicites.
Manipulation de fichiers et dates
Accéder et manipuler le système de fichiers est courant (lecture, écriture, uploads, permissions). Les fonctions natives telles que file_get_contents(), file_put_contents(), fopen(), fread() et fwrite() couvrent les besoins courants, tandis que is_readable() et is_writable() aident à valider les droits. Pour les dates et heures, l'objet DateTime offre une API robuste pour les fuseaux horaires, le formatage et les calculs. Protéger les accès (validation des chemins, contrôle des uploads, utilisation de répertoires temporaires sécurisés) réduit les risques de faille. Cette section présente exemples et recommandations pour traiter fichiers et dates en production.
Évolutions de PHP 8 et bonnes pratiques
PHP 8 introduit des avancées notables : compilation JIT pour certains cas de calcul, typage plus strict (types d'union, promotion des propriétés), et des optimisations de performance et sécurité. Les bases présentées dans ce document restent compatibles avec PHP 8.x : privilégier les types déclarés lorsque cela renforce la lisibilité et la sécurité, adopter les tests unitaires et éviter les patterns obsolètes. La transition vers une architecture modulable, l'usage contrôlé des exceptions et l'application de principes SOLID facilitent la maintenance à long terme pour des projets exploitant la programmation orientée objet et des serveurs comme Apache ou PHP-FPM.
💡 Pourquoi choisir ce cours ?
Approche synthétique et pragmatique : définitions claires, extraits de scripts et exemples concrets pour aller à l'essentiel en 15 pages. Rédigé dans le contexte pédagogique BTS IRIS par Thierry VAIRA (formateur), le document explicite le fonctionnement du moteur Zend, base des versions modernes de PHP, pour aider à comprendre certaines évolutions syntaxiques. Utile comme aide‑mémoire technique complémentaire aux manuels plus volumineux.
<?php
echo "Hello world";
?>
👤 À qui s'adresse ce cours ?
- Public cible : étudiants et développeurs web en formation initiale ou reconversion souhaitant acquérir les fondations du PHP côté serveur, ainsi que les techniciens front-end cherchant à comprendre la couche serveur simple.
- Prérequis : notions d'HTML (structure de page), connaissances de base en programmation (variables, boucles) et accès à un serveur ou environnement local avec interpréteur PHP pour tester les scripts.
- Migration depuis HTML statique : développeurs souhaitant convertir des pages HTML statiques en contenu dynamique côté serveur trouveront des exemples concrets et des bonnes pratiques pour cette transition.
❓ Foire Aux Questions (FAQ)
Comment PHP produit-il uniquement du HTML côté client ?
PHP s'exécute sur le serveur ; le moteur interprète les balises <?php ?> et évalue les instructions d'affichage (echo, print, printf). Le serveur envoie au client uniquement le flux HTTP résultant (HTML, JSON, etc.). Le navigateur reçoit le résultat textuel et ne voit jamais le code source PHP.
Quelle est la différence pratique entre tableau indexé et tableau associatif ?
Un tableau indexé utilise des indices numériques implicites (0, 1, 2...), tandis qu'un tableau associatif utilise des clés chaînes pour référencer les éléments. En PHP, on manipule les deux via array() ou la syntaxe littérale, et on parcourt généralement ces structures avec foreach ($tab as $cle => $valeur), ce qui facilite la génération dynamique de listes et le traitement de formulaires.