PHP orienté objet
La programmation orientée objet en PHP depuis les bases : classes et objets, héritage, interfaces, éléments statiques et traits, exceptions, espaces de noms, chargement automatique des classes et Composer. Les exemples fonctionnent en PHP 7.4 et 8, et là où PHP 8 raccourcit le code, ils renvoient à la série Migrer vers PHP 8.
Une classe réunit des données et les fonctions qui travaillent avec elles en un seul ensemble. Comment écrire une première classe, en créer des objets, protéger les données contre les modifications indésirables et à quoi faire attention lors de la copie d’objets.
Une classe dérivée reprend les propriétés et les méthodes de la classe parente et peut les étendre ou les modifier. Comment hériter, appeler les méthodes de la classe parente, à quoi servent les classes abstraites, quand interdire l’héritage par final et quand mieux vaut ne pas hériter du tout.
Une interface décrit ce qu’une classe doit savoir faire, mais pas comment. Un code qui s’appuie sur une interface fonctionne ensuite avec toute classe qui la respecte – par exemple avec le véritable envoi d’e-mails sur le site et avec un envoi simulé dans un test.
Tout n’appartient pas à un objet concret. Les constantes et les méthodes statiques appartiennent à toute la classe, les traits partagent du code entre des classes sans héritage. Comment les utiliser et où faire attention.
Une exception interrompt le code et transmet l’erreur à l’endroit qui sait la traiter. Comment lever et intercepter des exceptions, pourquoi catch(Exception) n’intercepte pas tout, comment écrire votre propre exception et ce qui arrive à une exception que personne n’a interceptée.
Les espaces de noms séparent les classes des différentes parties du site et des bibliothèques, pour que leurs noms n’entrent pas en collision. Comment les écrire, comment utiliser des classes d’un autre espace de noms par use et dans quel piège tombe presque tout débutant.
Au lieu de dizaines de lignes avec require, il suffit de dire à PHP où chercher les classes. Comment écrire une fonction de chargement automatique des classes selon la convention PSR-4, comment organiser les dossiers et pourquoi un site qui fonctionne sous Windows peut cesser de fonctionner sur le serveur.
Composer télécharge les bibliothèques dont le site a besoin, veille à leurs versions et génère un autoloader aussi pour vos propres classes. Comment l’utiliser, ce qui va dans composer.json et composer.lock et comment mettre un site avec des bibliothèques sur un hébergement sans SSH.