Manuel PHP
Précédent | Chapitre 19. Les classes et les objets (PHP 5) | Suivant

# Syntaxe de base

## class

Chaque définition de classe commence par le mot-clé class, suivi par le nom de la classe, qui peut être quelconque à condition que ce ne soit pas un mot réservé en PHP. Suivent une paire de parenthèses contenant la définition des membres et des méthodes. Une pseudo-variable $this est disponible lorsqu'une méthode est appelée depuis un contexte objet. $this est une référence à l'objet appelé (habituellement, l'objet auquelle la méthode appartient, mais ce peut être un autre objet si la méthode est appelée de manière statique depuis le contexte d'un autre objet). Ce comportement est illustré dans l'exemple suivant :

Exemple 19-1. La variable $this en programmation objet

`<?php class A { function toto() { if (isset($this)) { echo '$this is defined ('; echo get_class($this); echo ")\n"; } else { echo "\$this is not defined.\n"; } } } class B { function titi() { A::toto(); } } $a = new A(); $a->toto(); A::toto(); $b = new B(); $b->titi(); B::titi(); ?>`

L'exemple ci-dessus va afficher :

    $this is defined (a)
    $this is not defined.
    $this is defined (b)
    $this is not defined.

Exemple 19-2. Définition simple d'une classe

`<?php class SimpleClass { // déclaration d'un membre public $var = 'une valeur par défaut'; // déclaration de la méthode public function displayVar() { echo $this->var; } } ?>`

## Le mot clé new

Pour créer une instance d'un objet, un nouvel objet doit être créé et assigné à une variable. Un objet doit toujours être assigné lors de la création d'un nouvel objet à moins qu'un l'objet ait un constructeur défini qui lance un exception en cas d'erreur.

Exemple 19-3. Création d'une instance

`<?php $instance = new SimpleClass() ?>`

Lors de l'assignation d'un instance déjà créée d'un objet à une variable, la nouvelle variable accédera à la même instance de l'objet assigné. Ce comportement est le même que lors du passage d'une instance à une fonction. Une nouvelle instance d'un objet déjà créé peut être effectuée par clonage.

Exemple 19-4. Assignation d'un objet

`<?php $assigned = $instance; $reference =& $instance; $instance->var = '$assigned aura cette valeur'; $instance = null; // $instance et $reference deviennent null var_dump($instance); var_dump($reference); var_dump($assigned); ?>`

L'exemple ci-dessus va afficher :

    NULL
    NULL
    object(SimpleClass)#1 (1) {
       ["var"]=>
         string(30) "$assigned aura cette valeur"
    }

## Le mot clé extends

Une classe peut hériter des méthodes et des membres d'une autre classe en utilisant le mot clé extends dans la déclaration. Il n'est pas possible d'étendre de multiples classes, une classe peut uniquement hériter d'une seule classe de base.

Les méthodes et membres hérités peuvent être surchargés, à moins que la classe parent ait défini une méthode comme final. Pour surcharger, il suffit de redéclarer la méthode avec le même nom que celui défini dans la classe parent. Il est possible d'accéder à une méthode ou un membre surchargé avec l'opérateur parent::

Exemple 19-5. Héritage d'une classe simple

`<?php class ExtendClass extends SimpleClass { // Redéfinition de la méthode parent function displayVar() { echo "Classe étendue\n"; parent::displayVar(); } } $extended = new ExtendClass(); $extended->displayVar(); ?>`

L'exemple ci-dessus va afficher :

    Classe étendue
    une valeur par défaut

Précédent | Sommaire | Suivant
Les classes et les objets (PHP 5) | Niveau supérieur | Auto-chargement de classes