is_subclass_of
(PHP 4, PHP 5, PHP 7, PHP 8)
is_subclass_of — Prüft ob ein Objekt von der angegebenen Klasse abstammt oder sie implementiert
Beschreibung
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() - Checks if the object is of this class or has this class as one of its parents
- class_parents() - Return the parent classes of the given class