29/12/2006, 15:02
De plus en plus, on entend parler de POO (Programmation Orientée Objet).
Les habitués de java (entre autres) connaissent ça par coeur, mais c'est un concept qui n'a atteint sa maturité en PHP que depuis l'avènement de PHP5.
Tout d'abord, qu'est-ce qu'un objet?
C'est tout simplement un élément qui se définit par des propriétés et des méthodes et qui est utilisable à plusieurs moments.
Prenons l'exemple d'une porte, qui est un objet courant. On peut lui définir des propriétés qui seront son état (ouverte, fermée, verouillée) et la pièce (ce qui la rend unique). On peut aussi lui définir des méthodes qui seront ouvrir, fermer, verrouiller, déverouiller.
Vous voyez donc comment l'objet porte peut être appelé plusieurs fois au même moment: si vous définissez votre maison, vous aurez porte(entrée), porte(cuisine), ...
Un objet contient 2 méthodes par défaut (en PHP5), c'est ce qu'on appelle le constructeur et le destructeur.
Le constructeur permet d'initialiser l'objet, donc de lui donner ses paramêtres initiaux. En PHP4, le constructeur se fait en créant dans l'objet une fonction dont le nom est celui de l'objet, alors qu'en PHP5 il y a une fonction __construct()
Le destructeur sert à supprimer cet objet, il n'existe réellement qu'en PHP5.
Pour l'instant, nous nous limiterons à l'utilisation en PHP4.
Comment définir notre porte?
Nous allons créer une classe (qui est donc la définition de l'objet) en lui donnant des paramètres par défaut.
nous avons donc créé un objet porte qui n'a pas de méthode et qui a 2 propriétés: son nom et son état initial.
Nous allons rajouter les 4 méthodes en tenant compte de certains impératifs:
- une porte ne peut être ouverte que si elle est déverouillée mais fermée,
- une porte ne peut être fermée que si elle est ouverte,
- une porte ne peut être verouillée que si elle est fermée,
- une porte ne peut être déverouillée que si elle est verouillée.
nous avons donc nos 4 méthodes et chacune tient compte de l'état précédent de la porte.
nous pouvons tester notre objet...
Nous devrions avoir comme affichage:
Les habitués de java (entre autres) connaissent ça par coeur, mais c'est un concept qui n'a atteint sa maturité en PHP que depuis l'avènement de PHP5.
Tout d'abord, qu'est-ce qu'un objet?
C'est tout simplement un élément qui se définit par des propriétés et des méthodes et qui est utilisable à plusieurs moments.
Prenons l'exemple d'une porte, qui est un objet courant. On peut lui définir des propriétés qui seront son état (ouverte, fermée, verouillée) et la pièce (ce qui la rend unique). On peut aussi lui définir des méthodes qui seront ouvrir, fermer, verrouiller, déverouiller.
Vous voyez donc comment l'objet porte peut être appelé plusieurs fois au même moment: si vous définissez votre maison, vous aurez porte(entrée), porte(cuisine), ...
Un objet contient 2 méthodes par défaut (en PHP5), c'est ce qu'on appelle le constructeur et le destructeur.
Le constructeur permet d'initialiser l'objet, donc de lui donner ses paramêtres initiaux. En PHP4, le constructeur se fait en créant dans l'objet une fonction dont le nom est celui de l'objet, alors qu'en PHP5 il y a une fonction __construct()
Le destructeur sert à supprimer cet objet, il n'existe réellement qu'en PHP5.
Pour l'instant, nous nous limiterons à l'utilisation en PHP4.
Comment définir notre porte?
Nous allons créer une classe (qui est donc la définition de l'objet) en lui donnant des paramètres par défaut.
Code PHP :
class porte {
// par defaut, une porte est fermee, nous initialisons donc son etat par défaut
var $etat = "fermee";
function porte($nom,$etat='') {
// le constructeur: une porte est obligatoirement definie par son nom
// l'etat initial de la porte peut etre defini
$this->nom = $nom;
if ($etat != '') {
$this->etat = $etat;
}
}
}nous avons donc créé un objet porte qui n'a pas de méthode et qui a 2 propriétés: son nom et son état initial.
Nous allons rajouter les 4 méthodes en tenant compte de certains impératifs:
- une porte ne peut être ouverte que si elle est déverouillée mais fermée,
- une porte ne peut être fermée que si elle est ouverte,
- une porte ne peut être verouillée que si elle est fermée,
- une porte ne peut être déverouillée que si elle est verouillée.
Code PHP :
class porte {
var $etat = "fermee";
function porte($nom,$etat='') {
$this->nom = $nom;
if ($etat != '') {
$this->etat = $etat;
}
}
function ouvrir() {
if ($this->etat == "fermee") {
$this->etat = "ouverte";
}
}
function fermer() {
if ($this->etat == "ouverte") {
$this->etat = "fermee";
}
}
function verouille() {
if ($this->etat == "fermee") {
$this->etat = "verouillee";
}
}
function deverouille() {
if ($this->etat == "verouillee") {
$this->etat = "deverouillee";
}
}
}nous avons donc nos 4 méthodes et chacune tient compte de l'état précédent de la porte.
nous pouvons tester notre objet...
Code PHP :
// on declare la nouvelle porte, dans son etat par defaut
$entree = new porte("entree_principale");
// on verifie l'etat
echo $entree->etat."<br />";
// on ouvre la porte
$entree->ouvre();
// on verifie l'etat
echo $entree->etat."<br />";
// on essaye de verouiller la porte ouverte
$entree->verouille();
// on verifie l'etat
echo $entree->etat;
Nous devrions avoir comme affichage:
Citation :
fermee
ouverte
ouverte
ouverte
ouverte
Ainsi, vous venez de voir comment on crée un modèle d'objet, comment on appelle de manière simple une méthode et comment on peut utiliser les propriétés.
La prochaine étape fera intervenir deux points très importants:
- passer des paramètres à une méthode,
- hériter un objet.

