Programmation Objet en PHP, codez évolutif
La programmation objet en PHP est possible, et même de plus en plus performante depuis la sortie de PHP7.
D’avis partagé avec de nombreux autres informaticiens, la programmation orientée objet, ou POO, est une manière de programmer efficace. Elle permet de s’assurer d’un fort potentiel :
- de réutisabilité du code,
- d’extension,
- d’évolution
- et de maintenance de l’application, logiciel, site web, …
De nos jours, même si elle se démocratise un peu, cette manière de programmer, et de penser n’est encore à mon goût pas assez répandue, notamment sous PHP.
Cet article sera en fait une série d’articles. Je ferai en sorte de les relier les uns aux autres pour traiter un maximum de sujets autour de la POO en PHP.
Programmation Objet en PHP : penser différemment
La manière la plus courante de programmer est la programmation procédurale. Pour la plupart des développeurs c’est la plus naturelle, dont l’un des principes est de séparer le traitement et les données.
Par exemple, si vous avez déjà développé votre site Internet, vous disposez certainement d’un système d’actualités. D’un côté se trouvent vos données : actualités, infos de connexion, messages divers pour gérer les erreurs, … et d’un autre côté des traitements construits par des suites d’instructions PHP qui vont agir sur les données (modification, …). Il y a de fortes chances que vous vous reconnaissiez à travers cette méthode de codage ! Et c’est normal car beaucoup de personnes n’appréhendent pas d’autre façon de représenter leur code.
La Programmation Orientée Objet est une autre manière de représenter votre programme, votre code. Elle défini pour tout élément de votre site web un ensemble d’objets qui vont interagir entres eux.
Mais c’est quoi un objet ?
Une manière simple de se représenter ce qu’est un objet est de regarder autour de soi ! Puisque vous lisez cet article vous avez sûrement un grand nombre d’objets autour de vous. Un ordinateur, un smartphone, une tablette, un écran, un bureau, une chaise, … sont des objets. Et oui, en POO on défini des objets comme dans la vraie vie.
Un exemple pertinent quand on explique la POO est une voiture pour un jeu vidéo. On imagine donc que dans notre jeu vidéo nous avons un objet Voiture. Cet objet dispose de caractéristiques, ou attributs qui le caractérise :
- une marque
- une couleur
- un nombre de places,
- …
Chaque caractéristique est une valeur, représentée vous vous en doutez par une variable. Ce qui sera toujours le cas en POO et ce même si ces variables peuvent s’avérer un peu spéciales. Vous le découvrirez au fil de mes articles.
A côté de ses attributs, ou caractéristiques, notre Objet Voiture dispose également d’actions, capacités ou méthodes. Elles vont toujours correspondre à des fonctions en POO. Ici aussi certaines fonctions seront spéciales, ce que l’on abordera ultérieurement.
On va par exemple avoir les éléments suivants qui se rattachent à une Voiture :
- avancer
- reculer
- allumer ses phares
- klaxonner
- …
En Programmation objet, on dispose donc d’objets, qui sont un ensemble d’attributs et de méthodes. Chaque objet en POO, tout comme dans votre quotidien, se construit en fonction d’un plan, qui est appelé une classe.
La classe est donc un moule, un modèle pour créer, instancier, des objets précis. Concrètement la classe regroupera les attributs (variables) et méthodes (fonctions) qui caractérisent un Objet.
Vocabulaire propre à la programmation objet en PHP
Un petit point vocabulaire, pour que nous soyons précis. Vous deviendrez ainsi familiers avec le jardon de la POO, pour tout langage le permettant. Ces définitions sont également valables dans d’autres langages de programmation tant que c’est de l’objet. Chaque article contiendra une section vocabulaire et un lexique sera ajouté en fin de la série d’articles.
- Un objet : est le résultat de l’instanciation d’une classe. On peut dire qu’un objet est une instance d’une classe.
- Une classe : c’est un regroupement d’attributs et de méthodes qui définissent le « plan de fabrication » d’un objet.
- Un attribut : c’est une variable qui défini une caractéristique d’un objet et qui est définie dans la classe de l’objet.
- Une méthode : c’est une fonction qui défini une caractéristique, une action d’un objet. Elle est définie dans la classe de l’objet.
Le prochain article traitera de la création d’une classe. J’y ajouterai des notions complémentaires :
- syntaxe propre à la programmation objet en PHP,
- encapsulation,
- visibilité,
- valeur par défaut
- et quelques recommandations pratiques.