is_subclass_of

(PHP 4, PHP 5, PHP 7, PHP 8)

is_subclass_ofPrüft ob ein Objekt von der angegebenen Klasse abstammt oder sie implementiert

Beschreibung

is_subclass_of(mixed$object_or_class, string$class, bool$allow_string = true): bool

Diese Funktion prüft ob das Objekt object_or_class von der Klasse class abstammt oder sie implementiert.

Parameter-Liste

object_or_class

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

class

Ein Klassenname

allow_string

Wenn dieser Parameter false ist, ist ein Zeichenketten-Klassenname als object_or_class 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_or_class eine Unterklasse von class ist, sonst false.

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";
}

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:

Ein Aufruf dieser Funktion verwendet alle registrierten Autoloader, falls die Klasse nicht bereits bekannt ist.

Siehe auch

  • get_class() - Ermittelt den Klassennamen eines Objekts
  • get_parent_class() - Gibt den Namen der Elternklasse eines Objektes zurück
  • is_a() - Prüft, ob ein Objekt vom angegebenen Typ oder untergeordneten Typ ist
  • class_parents() - Return the parent classes of the given class
To Top