PHP Différence entre __CLASS__, get_class () et get_called_class ()


Exemple

__CLASS__ constante magique __CLASS__ renvoie le même résultat que la fonction get_class() appelée sans paramètres et elles renvoient toutes les deux le nom de la classe où elles ont été définies (c'est-à-dire où vous avez écrit le nom de la fonction).

En revanche, les fonctions get_class($this) et get_called_class() appellent, get_called_class() toutes les deux le nom de la classe réelle qui a été instanciée:

<?php

class Definition_Class {

  public function say(){
     echo '__CLASS__ value: ' . __CLASS__ . "\n";
     echo 'get_called_class() value: ' . get_called_class() . "\n";
     echo 'get_class($this) value: ' . get_class($this) . "\n";
     echo 'get_class() value: ' . get_class() . "\n";
  }
  
}

class Actual_Class extends Definition_Class {}

$c = new Actual_Class();
$c->say();
// Output:
// __CLASS__ value: Definition_Class
// get_called_class() value: Actual_Class
// get_class($this) value: Actual_Class
// get_class() value: Definition_Class