La POO a fait son arrivé dans PHP3 mais s'était une implémentation qui permettait de répondre à une demande immédiate. La gestion des objets de PHP4 était suffisante mais pas idéale, et représente l'un des grands défauts de cette version du langage. C'est pourquoi l'un des premiers buts du projet menant à PHP5 fut de revoir entièrement ce modèle objet - tout en restant compatible avec les habitudes des développeurs, et les innombrables scripts déjà créés. En passant, le coeur du langage (le Zend Engine) profite d'une mise à jour complète : les développeurs disposent désormais d'un PHP plus complet, plus rapide et mieux pensé que ses prédécesseurs.
Avant de vous aventurer plus loin dans ce tuto, vous devez connaître les bases de PHP. Si ce n'est pas le cas, vous ne comprendrez certainement rien.
1. Les classes :
Voici une classe :
Explications :
En php5, les déclarations des variables se font soit en public (public) soit en privé (private) soit en protégé (protected). La différence réside dans le fait que si une variable est définie en type privé, elle ne pourra être modifié que par une fonction définie dans la classe contrairement à une variable définie en type public qui, elle, pourra être modifié n'importe où. En ce qui concerne le type protégé, la variable sera accessible uniquement depuis une méthode de cette classe, ou d'une classe héritant de celle-ci (Voir plus loin pour ce qui concerne l'héritage). Exemples :
Soit l'objet suivant :
2. Utilisation de cette classe :
Tout d'abord, pour pouvoir utiliser un objet, il faut l'instancier c'est à dire la déclarer. Pour cela :
Donc, tout d'abord j'inclus le fichier qui contient ma class. Ensuite je l'instancie en faisant
Maintenant que ma class existe, j'assigne à ma variable une valeur :
La variable prenom contient désormais la variable 'nelly';
Quel interet me direz-vous !
Et bien si, tout l'interêt est là. Maintenant je fais :
echo $instance->myVar .' et '. $instance2->myVar;
Affichera : nelly et ashley
En effet, chaque instance est totalement indépendante des autres. Voilà le grand intérêt de la POO. Vous pouvez créer autant d'instances que vous voulez pour chaque classe.
3. Pseudo-variable $this :
Le script suivant est un script de panier d'achat
$this est un pointeur vers l'instance de l'objet depuis laquelle la fonction qui contient this est appellée.
Un exemple plus gros :
Grâce à la variable $this, cet exemple affichera :
Adrien achète 6 salade(s)
Jarod achète 2 salade(s)
4. Place au constructeur :
Le constructeur correspond à une initialisation d'une variable dans une classe.
Un constructeur doit oblligatoirement porter le même nom que la classe.
En reprenant le premier exemple, voilà ce que ça donne :
Lors de l'instanciation de la classe, on écrira :
$instance = new personne('nelly','furtado');
La construction se fait plus souvent à l'aide de la fonction :5. L'héritage :
L'héritage est un moyen de réutiliser le code. On définit une hiérarchie de classes, et les classes enfant héritent de ses propriétés et méthodes.
Ici, nous voyons que les classes Fille et Garcon héritent des méthodes afficheNom() et afficheAge(), ainsi que des propriétés $nom et $age. De plus, nous n'avons pas besoin de définir le constructeur de ces deux classes puisqu'il est déjà présent dans leur parent personne et puisqu'il ne change pas.
C'est aussi simple que ça ! J'espère vous avoir éclairci sur la POO. Pour ne pas décourager les novices, j'ai préféré ne pas trop rentrer dans les détails. Mais pour les autres, ne vous inquiétez pas, j'y reviendrais plus tard.