Utilisez les classes
La programmation orientée objet en PHP
Créer et manipuler un objet
<?php
$perso = new Personnage;
Appeler les méthodes de l'objet
Pour appeler une méthode d'un objet, on utilise l'opérateur -><?php
class Personnage {
private $_force = 50; // La force du personnage, par défaut à 50.
private $_localisation = 'Lyon'; // Sa localisation, par défaut à Lyon.
private $_experience = 1; // Son expérience, par défaut à 1.
private $_degats = 0; // Ses dégâts, par défaut à 0.
}
// Nous déclarons une méthode dont le seul but est d'afficher un texte.
public function parler() {
echo 'Je suis un personnage !';
}
}
$perso = new Personnage;
$perso->parler();
Accéder aux attributs de l'objet
Rappelez-vous : nos attributs sont privés. Par conséquent, ce code lèvera une erreur fatale :<?php
class Personnage {
private $_force;
private $_experience;
private $_degats;
}
$perso = new Personnage;
$perso->_experience = $perso->_experience + 1; // Une erreur fatale est levée suite à cette instruction.
Accéder à un élément depuis la classe
Il faut demander à la classe d'augmenter l'expérience. Pour cela, nous allons écrire une méthode gagnerExperience() :<?php
class Personnage {
private $_experience;
public function gagnerExperience() {
// Cette méthode doit ajouter 1 à l'expérience du personnage.
}
}
$perso = new Personnage;
$perso->gagnerExperience();
Oui mais voilà : comment accéder à l'attribut $_experience dans notre méthode? C'est là qu'intervient la pseudo-variable $this. Regardez plutôt cet exemple :
<?php
class Personnage {
private $_experience = 50;
public function afficherExperience() {
echo $this->_experience;
}
}
$perso = new Personnage;
$perso->afficherExperience();
La ligne echo $this->_experience; signifie : "Donne-moi la valeur de l'attribut $_experience". Donc, pour ajouter 1 à l'attribut $_experience :
<?php
class Personnage {
private $_experience = 50;
public function afficherExperience() {
echo $this->_experience;
}
public function gagnerExperience() {
// On ajoute 1 à notre attribut $_experience.
$this->_experience = $this->_experience + 1;
}
}
$perso = new Personnage;
$perso->gagnerExperience(); // On gagne de l'expérience.
$perso->afficherExperience(); // On affiche la nouvelle valeur de l'attribut.