Funzione get_called_class

La funzione get_called_class restituisce il nome della classe nel contesto del quale è stato chiamato il metodo statico. Questo è utile quando si lavora con l'ereditarietà, quando è necessario determinare da quale classe esattamente è stato chiamato il metodo.

Sintassi

phpget_called_class();

Esempio

Creiamo due classi e chiamiamo il metodo dalla classe figlia:

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

  class ChildClass extends ParentClass {}

  echo ChildClass::test();
?>

Risultato dell'esecuzione del codice:

php'ChildClass'

Esempio

Verifichiamo il funzionamento della funzione quando chiamata dalla classe padre:

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

  class B extends A {}

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

Risultato dell'esecuzione del codice:

php'A'
'B'

Esempio

Utilizzo della funzione per creare oggetti della classe desiderata:

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);
?>

Risultato dell'esecuzione del codice:

php'Product'

Vedi anche

  • la funzione get_class,
    che restituisce la classe dell'oggetto
  • la funzione get_parent_class,
    che restituisce la classe padre