Les classes : class
Une classe est une collection de variables et de fonctions qui
fonctionnent avec ces variables. Les variables sont définies par
l'élément var et les fonctions par
function. Une classe est définie
en utilisant la syntaxe suivante :
L'exemple ci-dessus définit la classe Panier qui est composée
d'un tableau associatif contenant les articles du panier et de deux
fonctions, une pour ajouter et une pour enlever des éléments
au panier.
Avertissement
Vous NE POUVEZ PAS couper la définition d'une
classe en plusieurs fichiers. De la même façon, vous NE POUVEZ
PAS couper la définition d'une classe en de multiples blocs, à
moins que la coupure ne soit à l'intérieur de la déclaration d'une
méthode. Ce qui suit ne fonctionnera pas :
Néanmoins, ce qui suit est autorisé :
Les notes suivantes ne sont valables que pour PHP 4.
Attention
Le nom stdClass est utilisé en interne par
Zend et ne doit pas être utilisé. Vous ne pouvez pas nommer
une classe stdClass en PHP.
Attention
Les noms de fonctions __sleep et
__wakeup sont magiques en PHP. Vous ne pouvez
pas utiliser ces noms de fonctions dans vos classes, à moins
que vous ne souhaitiez utiliser la magie qui y est associée.
Attention
PHP se réserve l'usage de tous les noms de fonctions
commençant par __, pour sa propre magie.
Il est vivement recommandé de ne pas utiliser des noms de fonctions
commençant par __, à moins que vous ne
souhaitiez utiliser la magie qui y est associée.
En PHP 4, seuls les initialiseurs constants pour les variables
var sont autorisés. Utilisez les
constructeurs pour les initialisations variables, ou utilisant
des expressions.
Les classes forment un type de variable. Pour créer une variable
du type désiré, vous devez utiliser l'opérateur new.
L'instruction ci-dessus crée l'objet $cart et
$another_cart de la classe Panier.
La fonction add_idem() de l'objet
$cart est appelée afin d'ajouter
l'article numéro 10 dans $cart. Trois articles
numéro 0815 sont ajoutés au panier $another_cart.
$cart et $another_cart disposent des
fonctions add_item(), remove_item()
et de la variable items. Ce sont des fonctions
et variables distinctes. Vous pouvez vous représenter les
objets comme des dossiers sur votre disque dur. Vous pouvez
avoir deux fichiers lisez-moi.txt sur votre disque dur,
tant qu'ils ne sont pas dans le même répertoire. De même que vous
devez alors taper le chemin complet jusqu'au fichier, vous devez
spécifier le nom complet de la méthode avant de l'employer :
en termes PHP, le dossier racine est l'espace de nom global, et le
séparateur de dossier est ->. Par exemple,
les noms $cart->items et
$another_cart->items représentent deux
variables distinctes. Notez que le nom de la variable est alors
$cart->items, et non pas
$cart->$items : il n'y a qu'un seul
signe $ dans un nom de variable.
À l'intérieur d'une définition de classe, vous ne savez pas le
nom de la variable à partir duquel l'objet sera accessible dans
le script. On ne peut prévoir que l'objet créé sera
affecté à la variable $cart,
$another_cart ou quelque chose d'autres. Donc, vous ne
pouvez pas utiliser la syntaxe $cart->items. Mais pour
pouvoir accéder aux méthodes et membres d'un objet, vous pouvez utiliser
la variable spéciale $this, qui peut s'interpréter comme
"moi-même", ou bien "l'objet courant". Par exemple,
'$this->items[$artnr] += $num'
peut se lire comme 'ajouter $num au compteur
$artnr de mon propre tableau de compteur' ou bien
'ajouter $num au compteur $artnr du
tableau de compteurs de l'objet courant'.
Note:
La pseudo-variable $this n'est pas toujours définie si
la méthode dans laquelle elle est présente est appelée statiquement.
Cependant, ceci n'est pas une règle stricte : $this
est définie si une méthode est appelée statiquement depuis un autre objet.
Dans ce cas, la valeur de $this vaut l'objet appelé.
Ce comportement est illustré dans l'exemple ci-dessous :
Note:
Il y a des fonctions très pratiques pour gérer les classes et objets.
Vous pouvez étudier le chapitre sur les
fonctions de classes et objets.