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 fonctions delete 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
?>

Exercices