La classe est le moule qui sert à fabriquer les objets. Le nombre d'objets que l'on peut créer à l'aide d'une classe est illimité. On appelle l'opération qui consiste à créer un objet instanciation et l'objet ainsi créé peut aussi être appelé instance de classe.
Reprenons l'exemple de la page précédente:
<?php
class Voiture{
private $couleur="Rouge";
private $puissance;
private $vitesse;
public function accelerer(){
echo "Appel de la méthode accelerer()";
}
public function ralentir(){
echo "Appel de la méthode ralentir()";
}
}
?>
J'ai pris le soin d'initialiser l’attribut $couleur et mettre quelque chose dans les deux méthodes accelerer() et ralentir().
Supposons qu'on veut créer un objet du nom de $citadine à partir de la classe Voiture. L'instanciation de la classe ressemblerait à ceci:
<?php
$citadine = new Voiture();
?>
N'oubliez pas de placer le dollars avant l'identifiant de l'objet.
Nous avons désormais créé l'objet $citadine qui dispose de ses propres attributs $couleur, $puissance, et $vitesse et les méthodes accelerer() et relentir(). Autrement dit, si nous créons un autre objet à partir de la même classe, il disposera également de ses propres attributs et méthodes du même nom. Cependant, même si les identifiants des membres des deux objets créés sont similaires, ils sont tout de même indépendants les uns des autres.
Appel d'attributs et méthodes
Après avoir créé l'objet, on peut désormais accéder à ses membres (attributs et méthodes) par le biais de l'opérateur -> (un tiret suivi d'un chevron fermant).
Voici un exemple:
<?php
class Voiture{
private $couleur="Rouge";
private $puissance;
private $vitesse;
public function accelerer(){
echo "Appel de la méthode accelerer()";
}
public function ralentir(){
echo "Appel de la méthode ralentir()";
}
}
Appel de la méthode accelerer()
Fatal error: Cannot access private property Voiture::$couleur in index.php on line 17
La première ligne de l’exécution est logique. On a pu appeler la méthode accelerer() depuis l'extérieur de la classe car elle est publique. Ce qui affiche le message "Appel de la méthode accelerer()". Nous avons utilisé l'opérateur -> pour désigner la méthode accelerer() de l'objet $citadine (instance de la classe Voiture).
La deuxième ligne par contre affiche l'erreur "Cannot access private property" qui signifie que l'on peut pas accéder à un attribut privé de l'extérieur de la classe, ce qui est tout à fait logique. Si l'attribut $couleur était public, alors le message "Rouge" serait affiché à la place de l'erreur.
Notez que quand on veut accéder à un attribut par le biais de l'opérateur ->, le dollars de celui-ci est exclu.