La programmation orientée objet peut paraître effrayante au premier abord mais quand on comprend l’intérêt de cette technique, on peut l’adopter assez rapidement. En PHP mais aussi dans d’autres langages, on peut programmer de plusieurs manières dont la programmation orientée objet. Celle-ci offre une alternative de codage, avec des outils avancés qui garantissent solidité et flexibilité du code. Jetons un coup d’œil sur cette méthode de programmation qui fait dorénavant partie intégrale de Drupal 8 et permettra de mieux organiser votre code pour des évolutions futures.
Qu’est ce que la programmation orientée objet ?
Souvent appelée par son abréviation «POO», cette manière de programmer existe depuis des années mais est toute récente dans Drupal. Cette méthode permet de regrouper les tâches similaires dans des classes favorisant ainsi la maintenance et rendant les portions de code réutilisables pour un gain de temps. Sur petite échelle, la différence avec la programmation procédurale risque de vous échapper, mais au fur et mesure que vos applications prennent de l’ampleur, la programmation orientée objet diminuera considérablement votre charge de travail.
De ce fait, la programmation orientée objet répond à trois objectifs principaux :
- Concevoir l’organisation des projets numériques autour d’entités structurées : facilitant la modélisation d’application de plus grande envergure ;
- Fournir une certaine sécurité du code grâce au principe de l’encapsulation : qui permet d’empêcher l’accès aux données et aux méthodes contenues dans un objet, selon des droits d’accès différents (Public, Private, Protected) ;
- Permettre la réutilisation du code : la POO repose sur le principe du DRY (Don’t Repeat Yourself) qui permet d’éviter toute redondance de code en vue de faciliter la maintenance, les tests et les évolutions de celui-ci. Généralement, un changement de code implique une mise à jour entière de celui-ci. Avec cette manière de programmer, cela n’est plus nécessaire !
Quelle est la différence entre un objet et une classe ?
Pour comprendre l’intérêt de la programmation orientée objet, il faut distinguer les notions de classe et objet, qui sont très souvent confondues. En effet, une classe est comparable à un plan de construction d’une maison, décrivant les dimensions de la maison et les différentes connexions entre les parties qui composent la maison et les phases de construction.
Tandis que l’objet représente la maison même, construite grâce au plan de construction. A l’intérieur d’un « objet » on y retrouve des données comparables à la liste de matériels qui permettent l’assemblage final de la maison (toit, fenêtre, porte, etc.). En somme, l’objet est une instance de la classe, c'est-à-dire une application concrète du plan de construction.
Ainsi, les classes permettent de structurer les données et d’orchestrer les actions pour former l’objet. On peut donc créer plusieurs objets tout à fait indépendants à partir d’une même classe.
Initiation à la programmation orientée objet
Créer une classe
Créer une classe est assez simple : il faut déclarer le mot clé Class suivie du nom de la classe, et les accolades qui vont inclure les propriétés de la classe et ses méthodes.
Après avoir créé la classe, celle-ci peut être instanciée et stockée dans une variable appelée également propriété, en utilisant le mot clé New.
Définir les propriétés d’une classe
A l’intérieur des accolades, il faut définir les propriétés de la classe. Celles-ci permettent de définir l’objet et le rendent unique par rapport aux autres.
Définir les méthodes d’une classe
Après avoir défini les propriétés d’une classe, il faut à présent créer les méthodes, également appelées fonctions. Les actions individuelles qu’un objet sera en mesure d’effectuer sont définies dans la classe en tant que méthodes. Leurs rôles sont doubles :
- Lire ou mettre à jour les propriétés, il s’agit alors de « getters » et de « setters ». Les méthodes « Getters » commencent par Get et permettent de récupérer le contenu d’une variable. Tandis que les méthodes « Setters » commençant par Set permettent de modifier le contenu d’une variable ;
- Exécuter des actions plus complexes.
La particularité des méthodes magiques
La programmation orientée objet est intéressante avec PHP, puisque celui-ci fournit un certain nombre de méthodes magiques qui visent à simplifier l’utilisation des objets. Les méthodes magiques sont appelées lorsque certaines actions communes se produisent dans des objets.
Deux méthodes magiques sortent du lot du fait de leur importance :
- Le constructeur _construct : Quand on crée un objet avec New, PHP recherche à l’intérieur de la classe la méthode nommée _construct. Cette méthode-ci a pour rôle de construire l’objet et de le préparer à l’utilisation.
- Le destructeur _destruct : Cette fonction est également appelée automatiquement par PHP lorsqu’un objet est détruit.
Les avantages de la POO par rapport à la programmation procédurale
La programmation procédurale est une manière de programmer très connue, dans laquelle sont définies des fonctions qui s’appellent mutuellement. Elle repose donc sur l’action. En revanche, la programmation orientée objet permet la manipulation d’objets uniquement, c'est-à-dire des propriétés et des méthodes associées à des entités.
L’orientation objet offre de nombreux avantages :
- Une facilité de mise en œuvre : Bien qu’il y ait davantage de configurations à prévoir et de règles à respecter pour que cette manière de programmer s’avère efficace, la POO propose une approche différente sur la gestion des données. En effet, les données sont stockées à l’intérieur des objets, il n’est pas nécessaire que les variables soient transmises d’une fonction à une autre pour fonctionner correctement.
- Une meilleure organisation : tout est catalogué, en effet, chaque classe peut être conservée dans un fichier propre et le nommage uniforme selon PHP permet un accès simple à la classe. Le code est ainsi plus portable et donc facile à réutiliser dans de nouvelles applications.
- Une maintenance plus simple : les changements et mise à jour du code sont beaucoup plus rapides à réaliser, de part la simplicité à ajouter des nouvelles propriétés dans les classes.
- L’intégrité des données contenues dans l’objet : grâce au concept d’encapsulation qui consiste à rassembler les données ainsi que les méthodes dans une structure en empêchant l’accès aux données selon les droits suivants :
- Public : L’accès est ouvert à tout le monde ;
- Private : Personne ne peux y accéder à part la classe elle-même ;
- Protected : L’accès aux données est réservé aux fonctions des classes héritières (les classe filles qui héritent des classes mères, par exemple : la classe « Moineau » est l’héritière de la classe mère « Oiseau » comme la classe « Diplodocus » est héritière de la classe « Dinosaure »).