array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'de', ), 'this' => array ( 0 => 'function.is-subclass-of.php', 1 => 'is_subclass_of', ), 'up' => array ( 0 => 'ref.classobj.php', 1 => 'Klassen- und Objekt-Funktionen', ), 'prev' => array ( 0 => 'function.is-a.php', 1 => 'is_a', ), 'next' => array ( 0 => 'function.method-exists.php', 1 => 'method_exists', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'de', 'path' => 'reference/classobj/functions/is-subclass-of.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4, PHP 5, PHP 7, PHP 8)
is_subclass_of — Prüft ob ein Objekt von der angegebenen Klasse abstammt oder sie implementiert
Diese Funktion prüft ob das Objekt object_or_class
von der Klasse class
abstammt oder sie implementiert.
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.
Die Funktion liefert true
wenn die Klasse des Objekts
object_or_class
eine Unterklasse von
class
ist, sonst false
.
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
Hinweis:
Ein Aufruf dieser Funktion verwendet alle registrierten Autoloader, falls die Klasse nicht bereits bekannt ist.