PHP orienté objet, les classes (1)
Ça fait longtemps que j’ai envie de faire un petit quelque chose sur PHP orienté objet, alors je me lance dans un premier chapitre ou nous allons découvrir ensemble ce qu’est PHP dans sa version orienté objet..
Tout d’abord, les prérequis:
- Connaitre PHP :p
- Savoir (un peu) développer en PHP
- Avoir PHP5 installé sur son serveur ou sa machine
Un petit préambule….
Dans les premières versions de PHP, nous avions l’habitude de coder nos instructions les unes après les autres, notre code contient des fonctions, des variables, des constantes, bref tout le nécessaire pour que cela fonctionne comme on le souhaite. Un script dont les instructions sont les unes après les autres est un code dit procédural, il peut être générique au prix (souvent) d’une grande quantité de code et il en résulte une maintenance pouvant s’avérer difficile…
La programmation orienté objet est un concept radicalement différent, sur le plan du vocabulaire mais plus encore, elle demande une approche différente sur la manière de procéder à l’établissement de son code, ce qui peut être déroutant au premier abord. En contrepartie, un code orienté objet bien pensé permet une maintenance de son code plus aisée, une structure plus robuste et offre un code générique.
Je ne troll pas sur les différences entre un code procédural et un code objet, codé objet n’est pas forcément nécessaire à tout projet ! Et bien évidemment, il est préférable de bien coder en procédural que de faire du code imbuvable en objet.
Le décor étant planté, nous allons pouvoir attaquer dans le vif du sujet avec ce premier chapitre sur la découverte des classes..
PHP Oo c’est la classe !
Comme dit plus haut, le vocabulaire change en PHP Oo, on ne parle plus de fonctions mais de méthodes, on ne parle plus de variables mais d’attributs.
Fonction = méthode.
Variable = attribut.
Qu’est-ce qu’une classe ?
Une classe est un ensemble d’attributs et de méthodes
. Les méthodes de classes pourront modifier les attributs de cette même classe, faire des traitements etc… Il faut garder à l’esprit qu’une méthode ne fait pas le café !
Une histoire de syntaxe…
Une classe se définie par le mot clé: « class » suivi du nom que l’on veut bien lui donner. Un nom de classe comme pour une fonction doit être unique au sein de son code, sinon PHP vous rappellera qui est le chef.
Ce qui nous donne la syntaxe suivante pour une classe qui… ne fait rien:
1 2 3 4 5 | <?php class myClass { } ?> |
Voila une magnifique classe qui ne fait rien !
Pour les attributs, la syntaxe ne diffère pas des variables, on précède son attribut d’un « $ » suivi de son nom. Même chose pour les méthodes, la syntaxe ne diffère pas des fonctions. On précède donc une méthode du mot clé: « function » suivi de son nom. Ne tentez pas le diable en appelant une méthode par le nom de la classe dont elle fait partie, sinon cette méthode sera ce que l’on appelle un constructeur et voir les constructeurs ici, maintenant tout de suite embrouillerai les choses…
Voici donc une classe contenant un attribut et une méthode:
1 2 3 4 5 6 7 8 9 10 | <?php class myClass { public $attr; public function direBonjour() { echo 'bonjour'; } } ?> |
Pour résumer, la classe « myClass » contient l’attribut « $attr » qui ne vaut rien ainsi que la méthode « direBonjour » qui affiche un message.
Les instances de classes et les objets
Pour le moment notre classe « myClass » ne fait strictement rien si on l’enregistre dans un fichier PHP et qu’on pointe sur ce fichier. Elle ne fait rien car on ne l’a pas instanciée !
Qu’est-ce qu’une instance ?!
une instance de classe est le fait de créer un objet de cette classe. Une fois l’objet créer, nous pourrons appeler les méthodes qui composent notre classe. Pour clarifier et imager un peu la chose, nous pouvons nous dire qu’une classe est un ensemble de composants d’ordinateur accessibles via des objets tel que le clavier ou la souris.
Comment instancier une classe pour ainsi créer un objet ?!
De manière très simple avec le mot clé « new » suivi du nom de la classe. Voici une instance avec la classe ci-dessus:
1 2 3 | <?php $instance = new myClass(); ?> |
La variable « myObject » contient l’instance de la classe « myClass« . « $myObject » est donc…. Un objet ! Si vous avez un doute, vous pouvez toujours faire un var_dump de la variable « $myObject« , il y a de très forte chance que le type soit « stdClass« .
Et en pratique cela donne ça:
Un premier fichier « class.myclass.php » contenant:
1 2 3 4 5 6 7 8 9 10 | <?php class myClass { public $attr; public function direBonjour() { echo 'bonjour'; } } ?> |
Un second fichier « test.php » contenant:
1 2 3 4 | <?php $instance = new myClass(); $instance->direBonjour(); ?> |
Et sous vos yeux ébahis, votre classe nous à dit bonjour
.
Laissez un commentaire