Création d’objet, class, attribut
Exemple concret de programmation objet sous PHP 5
Comme l'on a vu précédemment, le but même de la programmation orienté est de modéliser de façon naturelle. Avec une telle méthode, il est possible que le code soit compréhensible facilement par les non informaticiens.
C'est pourquoi nous avons utilisé l'exemple de l'Animal pour les classes afin de mieux comprendre le concept. Certes, notre but en utilisant la programmation objet n'est pas de pouvoir endormir un animal. Mais de pouvoir manipuler les objets sachant que le principe reste le même et est applicable pour toute sorte d'objet.
Création d'objet PHP
Un compte bancaire peut aussi être considéré comme étant un objet. Créons alors un classe CarteBancaire et essayons d'instancier un objet de cette classe. Pour cela, l'opérateur new joue un rôle important. Il est aussi obligatoire de donner un nom à l'objet.
Voici alors la syntaxe d'instanciation de l'objet $mon_compte avec la définition de la classe correspondante.
<?php //définition de la classe class CompteBancaire { public $numero ="XXXX"; public $solde = 0; } //instanciation $mon_compte = new CompteBancaire; ?>
Remarques
Ceux qui connaissent Java savent qu'en Java les classes peuvent être définies dans un fichier tout en étant instanciées dans d'autres fichiers du même package sans autre déclaration supplémentaire.
Ceci n'est pas valable en PHP. En PHP, soit on met la classe dans le même fichier que l'instance, soit on le met dans un autre fichier et on fait un include ou un require pour inclure le fichier contenant la classe.
Vérification du type d'un objet
Dans le cas inverse, si on n'a que l'objet, comment savoir de quelle classe il tient ? Pour cela, il suffit d'utiliser la méthode get_class() en mettant l'objet en paramètre.
Dans l'exemple précédent :
//instanciation $mon_compte = new CompteBancaire; echo "Cet objet appartient à la classe: ".get_class($mon_compte) ;
Accès à un attribut d'une class
Après avoir créé un objet, voyons maintenant comment l'utiliser. On peut accéder à ces attributs et les manipuler sans problèmes.
Si on veut par exemple afficher la valeur de l'attribut solde de l'objet, on a le code ci-dessous :
//instanciation $mon_compte = new CompteBancaire; //Affichage solde echo "Solde: ".$mon_compte->solde;
Utilisation d'une méthode d'un objet
De la même façon, on peut aussi faire appel à ces méthodes. Les méthodes peuvent retourner une valeur ou rien.
<?php //définition de la classe class CompteBancaire { public $numero ="XXXX"; public $solde = 0; function crediter($montant) { $this->solde += $montant; } function debiter($montant) { $this->solde -= $montant; } function affiche_solde() {   ;echo "Le solde du compte est : ". $this ->solde; } } //instanciation $mon_compte = new CompteBancaire; //utilisation méthode $mon_compte->debiter(500); echo "Solde: ".$mon_compte->solde; ?>
Une valeur, le principe est le même. Par exemple, on peut ajouter une méthode etat_compte à la classe CompteBancaire, qui retourne l'état actuel du compte.
<?php class CompteBancaire { public $numero ="XXXX"; public $solde = 0; function crediter($montant) { $this->solde += $montant; } function debiter($montant) { $this->solde -= $montant; } function affiche_solde() { echo "Le solde du compte est : ". $this ->solde; } function etat_compte() { if ($this->solde >0) { return "créditeur"; } else { return "débiteur"; } } } //instanciation $mon_compte = new CompteBancaire; //créditer un compte : le solde vaut après 500 $mon_compte->crediter(500); //débiter un compte : Le solde vaut après 200 $mon_compte->debiter(300); $etat = $mon_compte->etat_compte(); echo "Solde ".$etat." de: ".$mon_compte->solde; ?>
Cet exemple affiche à l'écran :
Solde créditeur de: 200