Classe
Une classe est déclarée grâce au mot clé
class
. Suivent son nom et des instructions entre accolades qui
constituent les différents élements de la classe.
<?php class voiture // Déclaration de la classe : mot clé class suivi du nom { // La description de la classe viendra ici } ?>
Attributs
Les attributs sont des variables propres à chaque instance. Elles sont définies suivant la syntaxe des variables.
<?php class voiture { public $vitesse; // Attribut : propre à une instance public $carburant; } ?>
Constantes
Les constantes sont des variables spécifiques à une classe (contrairement aux variables globales) et communes à l'ensemble des instances. Par convention, leur nom est en majuscules.
<?php class voiture { const ESSENCE = 1; // Constante : commun à toutes les instances const DIESEL = 2; } ?>
Méthodes
Une méthode est une fonction propre à une classe. Elle répond à la même syntaxe que les autres fonctions.
<?php class voiture { function rouler($temps) // Méthode { return $temps * $this->vitesse; // Référence à l'objet en cours } } ?>
Utilisation
Instanciation
La classe est la description des propriétés des objets. Pour créer
une nouvelle instance de cette description, on utilise le mot clé
new
En reprenant l'exemple avec la classe voiture, on obtient donc
$voiture_1 = new voiture(); // Instanciation
Appel
Attribut
On peut faire appel à un attribut d'une instance existance en
utiliant l'opérateur flèche
->
(composé des caractères moins et supérieur).
Avec l'instance précédemment créée, on peut affecter une vitesse à la voiture :
$voiture_1->vitesse = 100; // Accès à un attribut
Méthode
L'appel à une méthode est semblable à celui d'une fonction classique à ceci près qu'elle utilise aussi l'opérateur -> pour indiquer l'instance utilisée.
Pour obtenir la distance parcourue, on utilisera donc :
$voiture_1->rouler(100); // Appel d'une méthode
Constante
La constante est commune et unique à toutes les instances. Elle est
liée directement à la description de l'objet, c'est à dire à la
classe.
On utilisera alors l'opérateur
::
pour accéder à une constante.
Pour notre classe voiture :
if($voiture_1->carburant == voiture::ESSENCE) // Appel à une constante { // Traitement du cas d'une instance de //voiture ayant ESSENCE pour carburant }
A l'intérieur d'une méthode de la classe, on utilisera l'opérateur
self::
pour accéder à la constante. Ceci est illustré dans la méthode rouler
:
class voiture { function demarrer() { if($this->carburant == self::DIESEL) // Appel à une constante de la classe courante { // ... } }
Instance courante
Pour faire appel à l'instance courante (comme par exemple accéder à
un attribut ou faire un appel à une méthode), on utilisera la
métavariable (elle a déjà été définie par l'interprêteur PHP)
$this
.
class voiture { function demarrer() { if($this->carburant == self::DIESEL) { $this->prechauffer(); // Référence à l'objet en cours // ... } }
Type
Pour déterminer le type d'un objet on peut utiliser le test
instanceof
qui renvoit vrai si l'objet est bien une instance de la
classe spécifiée :
$voiture_1 = new voiture(); // Instanciation if($voiture_1 instanceof voiture) { echo "L'objet est une instance de voiture"; } else { echo "L'objet n'est pas une voiture"; }
Pour connaître la classe exacte d'un objet, on utilisera la fonction
get_class
.
Pour connaître la classe parente (notion expliqué au chapitre héritage) d'un objet, on utilisera la
fonction
get_parent_class
.
echo get_class($voiture_1); // Nom de la classe echo get_parent_class($voiture_1); // Parent
Manipulation d'instances
Constructeur
Le constructeur est une méthode appelée lors de l'instanciation.
Ceci permet d'effectuer des opérations lors de l'initialisation.
C'est la méthode
__construct
qui est appelée.
<?php class Vehicule { public $places; function __construct($nb) { $this->places = $nb; /* l'argument passé au constructeur sert à initialiser la valeur de l'attribut */ } } ?>
Destructeur
Le destructeur permet de redéfinir (ou surcharger) le comportement par défaut lors de la destruction d'une instance. Cette méthode est exécutée lors d'un appel aux fonctionsdelete
ou unset
, ou encore à la fin du script.
<?php class Vehicule { public $places; function __destruct() { // instructions } } ?>
Copie
Par défaut, PHP effectue l'affection par référence lorsqu'on manipule des objets.
Pour effectuer une copie d'un objet et donc obtenir deux instances différentes mais avec des attributs
identiques, on utilisera le mot clé clone
.
<?php $v1 = new Voiture(5); $v2 = $v1; // référence $v2 = clone $v1; // copie ?>