Fonction get_called_class

La fonction get_called_class retourne le nom de la classe dans le contexte de laquelle une méthode statique a été appelée. Ceci est utile lors de travaux avec l'héritage, lorsqu'il est nécessaire de déterminer depuis quelle classe exacte une méthode a été appelée.

Syntaxe

phpget_called_class();

Exemple

Créons deux classes et appelons une méthode depuis la classe enfant :

php<?php
  class ParentClass {
    public static function test() {
      return get_called_class();
    }
  }

  class ChildClass extends ParentClass {}

  echo ChildClass::test();
?>

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

php'ChildClass'

Exemple

Vérifions le fonctionnement de la fonction lors d'un appel depuis la classe parente :

php<?php
  class A {
    public static function who() {
      return get_called_class();
    }
  }

  class B extends A {}

  echo A::who();
  echo "\n";
  echo B::who();
?>

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

php'A'
'B'

Exemple

Utilisation de la fonction pour créer des objets de la classe souhaitée :

php<?php
  class Factory {
    public static function create() {
      $class = get_called_class();
      return new $class;
    }
  }

  class Product extends Factory {}

  $obj = Product::create();
  echo get_class($obj);
?>

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

php'Product'

Voir aussi