Méthode __callStatic

La méthode __callStatic est une méthode magique en PHP qui est automatiquement appelée lors d'une tentative d'appel à une méthode statique inexistante ou inaccessible. Son premier paramètre est le nom de la méthode appelée, le second est un tableau des arguments passés.

Syntaxe

phppublic static function __callStatic(string $name, array $arguments);

Exemple

Créons une classe avec la méthode __callStatic et essayons d'appeler une méthode statique inexistante :

php<?php
class MyClass {
  public static function __callStatic($name, $args) {
    echo "Méthode statique '$name' appelée avec les arguments : ";
    print_r($args);
  }
}

MyClass::nonExistentMethod(1, 2, 3);
?>

Résultat de l'exécution du code :

phpMéthode statique 'nonExistentMethod' appelée avec les arguments : [1, 2, 3]

Exemple

Implémentons une façade simple pour créer des objets de différents types :

php<?php
class Factory {
  public static function __callStatic($name, $args) {
    if (strpos($name, 'create') === 0) {
      $className = substr($name, 6);
      return new $className(...$args);
    }
    throw new Exception("Méthode $name non trouvée");
  }
}

class User {}
$user = Factory::createUser();
var_dump($user instanceof User);
?>

Résultat de l'exécution du code :

phptrue

Voir aussi

  • la méthode __call,
    qui intercepte les appels aux méthodes inexistantes d'un objet
  • la méthode __get,
    qui intercepte les accès aux propriétés inexistantes