Définitions :
Un objet :
Un « objet » est une représentation d’une chose matérielle ou immatérielle du réel à laquelle on associe des propriétés et des actions. exemple : un véhicule , une personne, un animal, un compte bancaire, ...
Une Classe :
contient la définition de l’objet que l’on va creer = c’est le plan de fabrication d’un objet
class Vehicule // Présence du mot-clé class suivi du nom de la classe.
{
// Déclaration des attributs et méthodes ici.
}
Les Attributs (variables) :
caractéristiques propres à un objet. exemple : nom, prénom, couleur, ...
class Vehicule
{
private $nombre_roues = 4; // nombre de roues du véhicule, par défaut = 4
private $couleur = 'vert'; // couleur du véhicule;
private $nom;
}
Les Methodes (fonctions) :
Des actions que l’on peut appliquer à un objet
class Vehicule
{
private $nombre_roues = 4; // nombre de roues du véhicule, par défaut = 4
private $couleur = 'vert'; // couleur du véhicule;
private $nom;
private $niveau_carburant = 100
public fonction klaxonner() // une méthode pour faire du bruit
{
echo "tut tut";
}
}
Instance de classe = résultat d’une instanciation = création d’un objet
exemple : un tricyle est crée à partir de l’objet véhicule
$tricyle = new Vehicule();
// initialisation des variables
$tricyle->nombre_roues = 3;
$tricyle->couleur = 'rouge';
$tricyle->nom = 'velo_toto';
// execution d'une fonction
$tricyle->klaxonner(); // faire du bruit
function __construct()
Permet de sauvegarder les variables passées en argument lors de l’instanciation
class Vehicule {
public nom;
public function __construct($recup_nom = 'pas encore de nom'){
$this->nom = $recup_nom;
}
}
$tricyle = new Vehicule("Mon_Super_Tricycle");
echo "le nom de mon tricyle = ".$tricycle->$nom; // donnera la valeur : Mon_Super_Tricycle;
Visibilite public / private / protected
- public, permet d’indiquer que la propriété ou la méthode sera accessible à l’intérieur mais aussi à l’extérieur de la classe
- private, permet d’indiquer que la propriété ou la méthode sera accessible à l’intérieur de la classe seulement
- protected, permet d’indiquer que la propriété ou la méthode sera accessible à l’intérieur de la classe et des classes héritées
Quelques petites précisions :
- Si une propriété est déclarée en utilisant le mot clef var, elle sera définie comme publique
- Si une méthode est déclarée sans visibilitée, elle sera définie comme publique
Accéder à un attribut : l’accesseur ou getter
création de methodes qui ont comme seul role d’afficher un attribut private
class Vehicule {
private nom;
public function __construct($recup_nom = 'pas encore de nom'){
$this->nom = $recup_nom;
}
public fonction getNom(){
return $this->nom;
}
}
$tricyle = new Vehicule("Mon_Super_Tricycle");
echo $tricycle->nom; // Error, $nom => private
echo $tricylce->getNom(); // affiche : Mon_Super_Tricycle;
Modifier un attribut : mutateur ou setter
création de methode qui ont comme seul role de modifier un attribut private d’un objet
class Vehicule {
private nom;
private roues = 4;
public function __construct($recup_nom = 'pas encore de nom'){
$this->nom = $recup_nom;
}
public fonction getRoues(){
return $this->roues;
}
public function setRoues($nombre_roues){
if(is_int($nombre_roues) && $nombre_roues > 0 && $nombre_roues < 10){
$this->roues = $nombre_roues;
}
else {
trigger_error('Le nombre de roue est invalide', E_USER_WARNING);
}
}
}
$tricycle = new Vehicule("Mon_Super_Tricycle");
$tricycle->setRoues(3);
echo $tricycle->getRoues; // affiche 3
$tricycle->setRoues(11);
echo $tricycle->getRoues; // Warning : le nombre de roues est invalide