Klassen- und Objekt-Funktionen
PHP Manual

is_subclass_of

(PHP 4, PHP 5, PHP 7)

is_subclass_ofPrüft ob ein Objekt von der angegebenen Klasse abstammt

Beschreibung

bool is_subclass_of ( mixed $object , string $class_name [, bool $allow_string = TRUE ] )

Diese Funktion prüft ob das Objekt objekt von der Klasse class_name abstammt.

Parameter-Liste

object

Ein Klassenname oder eine Objektinstanz. Es wird kein Fehler generiert, wenn die Klasse nicht existiert.

class_name

Ein Klassenname

allow_string

Wenn dieser Parameter false ist, ist ein Zeichenketten-Klassenname als object nicht erlaubt. Dies verhindert ebenso den Aufruf vom Autoloader, wenn die Klasse nicht existiert.

Rückgabewerte

Die Funktion liefert TRUE wenn die Klasse des Objekts object eine Unterklasse von class_name ist, sonst FALSE.

Changelog

Version Beschreibung
5.3.9 allow_string Parameter hinzugefügt
5.3.7 class_name kann nun auch der Name eines Interfaces sein
5.0.3 Als object kann nun auch ein Klassenname anstelle einer Objektinstanz übergeben werden.

Beispiele

Beispiel #1 is_subclass_of() Beispiel

<?php
// Definition einer Klasse
class WidgetFactory
{
  var 
$oink 'moo';
}

// Definition einer Kindklasse
class WidgetFactory_Child extends WidgetFactory
{
  var 
$oink 'oink';
}

// Erzeugung von Objekten
$WF = new WidgetFactory();
$WFC = new WidgetFactory_Child();

if (
is_subclass_of($WFC'WidgetFactory')) {
  echo 
"Ja, \$WFC ist eine Unterklasse von WidgetFactory\n";
} else {
  echo 
"Nein, \$WFC ist keine Unterklasse von WidgetFactory\n";
}


if (
is_subclass_of($WF'WidgetFactory')) {
  echo 
"Ja, \$WF ist eine Unterklasse von WidgetFactory\n";
} else {
  echo 
"Nein, \$WF ist keine Unterklasse von WidgetFactory\n";
}


// ab PHP 5.0.3 funktioniert auch
if (is_subclass_of('WidgetFactory_Child''WidgetFactory')) {
  echo 
"Ja, WidgetFactory_Child ist eine Unterklasse von WidgetFactory\n";
} else {
  echo 
"Nein, WidgetFactory_Child ist keine Unterklasse von WidgetFactory\n";
}
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

Ja, $WFC ist eine Unterklasse von WidgetFactory
Nein, $WF ist keine Unterklasse von WidgetFactory
Ja, WidgetFactory_Child ist eine Unterklasse von WidgetFactory

Beispiel #2 Verwendung von is_subclass_of() mit einem Interface

<?php
// Definition des Interface
interface MyInterface
{
  public function 
MyFunction();
}

// Definition der Klassenimplementierung des Interface
class MyClass implements MyInterface
{
  public function 
MyFunction()
  {
    return 
"MyClass implementiert MyInterface!";
  }
}

// Objekt-Erzeugung
$my_object = new MyClass;

// Funktioniert seit 5.3.7

// Prüfung unter Verwendung des Objektexemplars der Klasse
if (is_subclass_of($my_object'MyInterface')) {
  echo 
"Ja, \$my_object ist eine Unterklasse von MyInterface\n";
} else {
  echo 
"Nein, \$my_object ist keine Unterklasse von MyInterface\n";
}

// Prüfung unter Verwendung des Klassennamens als Zeichenkette
if (is_subclass_of('MyClass''MyInterface')) {
  echo 
"Ja, MyClass ist eine Unterklasse von MyInterface\n";
} else {
  echo 
"Nein, MyClass ist keine Unterklasse von MyInterface\n";
}
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

Ja, $my_object ist eine Unterklasse von MyInterface
Ja, MyClass ist eine Unterklasse von MyInterface

Anmerkungen

Hinweis:

Die Verwendung dieser Funktion wird jegliche registrierte Autoloader verwenden, falls die Klasse nicht bereits bekannt ist.

Siehe auch


Klassen- und Objekt-Funktionen
PHP Manual