Dans cette leçon, le formateur présente l'objet PDO (PHP Data Object), introduit en PHP 5 et activé par défaut depuis la version 5.1. Il explique que PDO fournit une interface d'abstraction permettant aux scripts PHP de communiquer avec différents systèmes de gestion de bases de données (SGBD) sans modifier le code applicatif. Le texte compare PDO aux anciennes extensions spécifiques à chaque SGBD (mysqli, mssql, oci, etc.), montrant que ces fonctions obligent à réécrire le code lorsqu’on change de SGBD. L’avantage principal de PDO est donc la portabilité du code, complétée par une sécurité accrue grâce aux requêtes préparées qui préviennent les injections SQL. Le formateur décrit ensuite les étapes d’activation de PDO : vérifier la présence de la ligne d’extension dans le fichier php.ini, activer le pilote correspondant au SGBD (ex. mysql, pgsql, sqlite) en décommentant la ligne appropriée, puis redémarrer le serveur. Il conclut en annonçant une prochaine leçon pratique sur l’utilisation de PDO dans du code PHP.
Chapters
Bonjour à tous, et bienvenue dans cette nouvelle leçon sur la programmation orientée objet en PHP. Aujourd'hui nous allons traiter un objet particulier qui a considérablement changé la manière dont PHP communique avec les bases de données. Cet objet s'appelle PDO. L'objet PDO, dont le sigle signifie PHP Data Object, est une interface qui permet de communiquer avec les bases de données via le langage PHP. L'objet PDO est disponible en PHP à partir de la version 5, mais ne fonctionne pas avec les versions antérieures car il nécessite les fonctionnalités orientées objet de PHP. L'objet PDO fournit une interface d'abstraction pour l'accès aux bases de données. Pour comprendre ce que c'est qu'une interface d'abstraction, revenons un peu en arrière et voyons comment les scripts PHP interagissaient avec les bases de données. Notez que cela ne signifie pas que ces anciennes méthodes ne fonctionnent plus. Mais ils sont largement dominés par l'objet PDO. Imaginez que l'on a développé un code PHP qui permet d'interroger une base de données MySQL. Afin d'établir une connexion au serveur de base de données, on fait appel à la fonction mysqli_connect disponible avec l'extension mysqli que j'ai traitée dans une série consacrée au langage PHP. Pour sélectionner une base de données sur le serveur après l'établissement de la connexion, on invoque la fonction mysqli_select_db. Pour exécuter une requête SQL sur la base de données, on la passe à travers la fonction mysqli_query, etc. Pour qu'un script PHP communique avec une base de données Microsoft SQL Server, on fait appel aux fonctions mssql_connect, mssql_select_db, et ainsi de suite. Notez que cette série de fonctions ont été supprimées à partir de PHP 7, mais peuvent être remplacées par ODBC_connect, odb_close et j'en passe. Et pour interagir avec une base de données Oracle, on exécute la série de fonctions genre oci_connect, oci_execute, oci_close et ça continue de la même manière avec les autres SGBDs. Donc, vous avez remarqué que le code PHP que vous éditez est initialement conçu pour communiquer avec un SGBD en particulier. Si un jour vous décidez de changer de SGBD, par exemple remplacer MySQL par Oracle, alors des modifications majeures dans votre code source s'imposent. Des fois même, on est amené à refaire le code en intégralité, ce qui n'est pas du tout pratique. Sans oublier que le mode même de fonctionnement des SGBD est parfois différent, ce qui veut dire que la logique suivie au moment du développement doit être revue. L'idéal serait de passer d'un SGBD à un autre sans toucher au code PHP conçu, ou au moins, sans lui apporter des modifications significatives. Justement, c'est ça le principe de l'abstraction de la base de données, ou abstraction de données pour être plus précis. Il s'agit en fait d'une technique de programmation qui consiste à manipuler les données sans se soucier de la manière dont elles sont organisées dans la base de données, et l'objet PDO assure cette abstraction. Alors, l'ultime avantage que procure l'utilisation de l'objet PDO est l'abstraction. Le code source de notre projet PHP devient indépendant de la nature du SGBD qui renferme des données. On peut donc passer d'un SGBD à un autre sans vraiment modifier le code. Des petites modifications s'imposent parfois, mais ce n'est pas aussi significatif. Mais ce n'est pas tout! En effet, l'objet PDO présente un autre avantage qui n'est pas négligeable du tout. Cette fois-ci, c'est en termes de sécurité. En effet, PDO présente une immunité native contre les injections SQL s'il est bien utilisé. Les injections SQL sont des attaques qui visent les sites et les applications web qui reposent sur des bases de données SQL. En effet, l'attaquant forge une requête SQL qu'il introduit ensuite par les entrées du site web comme les champs d'un formulaire ou l'URL. Si le site web présente une vulnérabilité vis-à-vis de l'injection SQL, alors la requête forgée par le pirate finit par s'exécuter par le serveur. On verra cette vulnérabilité et bien d'autres en détail dans une série qui sera consacrée à la sécurité des applications web. Pour se servir de l'objet PDO, il il faut que celui-ci soit activé. Basiquement, depuis la version 5.1 de PHP, l'objet PDO est activé par défaut. Sur le fichier php.ini qui sert à la configuration du moteur PHP, la ligne suivante doit être présente. Sur le système Linux ou BSD, cette ligne a la forme suivante. Ensuite, il faut activer le pilote spécifique au SGBD à utiliser. Sans ce pilote, l'objet PDO ne pourra pas interroger la base de données. Le pilote est déclaré après la ligne d'activation de l'objet PDO de cette manière. Par exemple, pour renseigner le pilote du SGBD MySQL, on déclare dans le fichier php.ini les 2 lignes suivantes. Sur Linux ou BSD, on aura les lignes suivantes. Voici quelques exemples de pilotes des SGBD supportés par l'objet PDO. Parfois, ces lignes sont par défaut présentes dans le fichier php.ini, mais elles commencent par un point-virgule qui signifie que la ligne courante est un commentaire. Il faut donc retirer le point-virgule, enregistrer le fichier et redémarrer le serveur pour que les changements tiennent effet. Désormais, vous savez ce que c'est que l'objet PDO et pourquoi il est recommandé de s'en servir. Dans la prochaine leçon, on va découvrir ensemble comment l'utiliser dans des programmes PHP d'une manière pratique. Merci pour votre attention et à la vidéo prochaine.