Méthodes Magiques

Les méthodes magiques sont des méthodes qui sont appelées suite à un événement particulier (construction, destruction, clonage...).

Si la méthode n'est pas implémentée dans votre classe, l'action par défaut sera effectuée.

Les méthodes magiques commencent par un double souligné bas (__).

Définition__construct, __destruct

Ces méthodes permettent de réaliser des actions à la construction ou à la destruction d'un objet.

Définition__call, __callStatic

La méthode __call est appelée lorsque vous utilisez une méthode qui n'existe pas.

Dans ce cas vous pouvez ajouter un contenu alternatif :

1
public function __call($methode, $arg)
2
{
3
  echo "la méthode $methode n'existe pas";
4
}

__callStatic concerne l'appel à une méthode static.

Définition__get, __set

Ces méthodes sont appelées lorsque vous tentez d'accéder à une propriété inaccessible ou inexistante.

On pourrait utiliser ce mécanisme pour retourner une erreur ou simuler un système de getter et setter sur des propriétés protégées :

1
public function __set($name, $value)
2
{
3
  $this->$name = $value;
4
}
5
public function __get($name)
6
{
7
  return $this->$name;
8
}

Définition__toString

Cette méthode est appelée lorsque vous utilisez votre objet comme s'il était une String.

1
public function __toString()
2
{
3
  return "Je suis un objet";
4
}
5
...
6
echo $monObjet; // affiche "Je suis un objet"

Définition__invoke

Cette méthode est appelée lorsque vous tentez d'utiliser votre objet comme une fonction.

1
public function __invoke($arg)
2
{
3
  echo "Je suis un objet pas une fonction";
4
}
5
...
6
$monObjet(); // affiche : "Je suis un objet pas une fonction"

Définition__isset, __unset, __debugInfo, __clone

Ces méthodes sont appelées lorsque vous tentez d'utiliser les fonctions isset(), unset(), var_dump() ou le mot clef clone.