Les classes PHP

Définition

Les classes en PHP nous permettent de définir un modèle d'objet.
Une définition de classe basique commence par le mot-clé class, suivi du nom de la classe. Suit une paire d'accolades contenant la définition des propriétés et des méthodes appartenant à la classe.
class MaClasse
{
	// Définition des propriétés

	// Définition des méthodes

}
Une classe peut contenir ses propres constantes, variables (appelées "propriétés" ou "attributs"), et fonctions (appelées "méthodes").
Exemple :
class SimpleClass
{
    // déclaration d'une propriété
    public $var = 'une valeur par défaut';

    // déclaration des méthodes
    public function displayVar()
    {
        echo $this->var;
    }
}

$this

La pseudo-variable $this est disponible lorsqu'une méthode est appelée depuis un contexte objet. $this est une référence à l'objet appelant (habituellement, l'objet auquel 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).
Exemple :
class A
{
  function toto()
  {
    if (isset($this)) {
      echo '$this est définie (';
      echo get_class($this);
      echo ")\n";
    } else {
      echo "\$this n'est pas définie.\n";
    }
  }
}

class B
{
  function titi()
  {
    // Note: la ligne suivante émet une erreur si E_STRICT est activé.
    A::toto();
  }
}

$a = new A();
$a->toto();

// Note: la ligne suivante émet une erreur si E_STRICT est activé.
A::toto();
$b = new B();
$b->titi();

// Note: la ligne suivante émet une erreur si E_STRICT est activé.
B::titi();
L'exemple ci-dessus va afficher :
$this est définie (A)
$this n'est pas définie.
$this est définie (B)
$this n'est pas définie.

new

Pour créer une instance d'une classe, le mot-clé new doit être utilisé.
Une instance d'une classe est la représentation de cette classe, cela nous donne un objet manipulable.
Exemple :
$instance = new SimpleClass();

// Ceci peut également être réalisé avec une variable :
$className = 'SimpleClass';
$instance = new $className(); // new SimpleClass()