is_subclass_of
(PHP 4, PHP 5, PHP 7)
is_subclass_of — Prüft ob ein Objekt von der angegebenen Klasse abstammt oder sie implementiert
Beschreibung
Diese Funktion prüft ob das Objekt objekt
von der Klasse class_name
abstammt oder sie implementiert.
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
- 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
Deutsche Übersetzung
Sie haben gebeten, diese Seite auf Deutsch zu besuchen. Momentan ist nur die Oberfläche übersetzt, aber noch nicht der gesamte Inhalt.Wenn Sie mir bei Übersetzungen helfen wollen, ist Ihr Beitrag willkommen. Alles, was Sie tun müssen, ist, sich auf der Website zu registrieren und mir eine Nachricht zu schicken, in der Sie gebeten werden, Sie der Gruppe der Übersetzer hinzuzufügen, die Ihnen die Möglichkeit gibt, die gewünschten Seiten zu übersetzen. Ein Link am Ende jeder übersetzten Seite zeigt an, dass Sie der Übersetzer sind und einen Link zu Ihrem Profil haben.
Vielen Dank im Voraus.
Dokument erstellt 30/01/2003, zuletzt geändert 26/10/2018
Quelle des gedruckten Dokuments:https://www.gaudry.be/de/php-rf-is-subclass-of.html
Die Infobro ist eine persönliche Seite, deren Inhalt in meiner alleinigen Verantwortung liegt. Der Text ist unter der CreativeCommons-Lizenz (BY-NC-SA) verfügbar. Weitere Informationen auf die Nutzungsbedingungen und dem Autor.
Referenzen
Diese Verweise und Links verweisen auf Dokumente, die während des Schreibens dieser Seite konsultiert wurden, oder die zusätzliche Informationen liefern können, aber die Autoren dieser Quellen können nicht für den Inhalt dieser Seite verantwortlich gemacht werden.
Der Autor Diese Website ist allein dafür verantwortlich, wie die verschiedenen Konzepte und Freiheiten, die mit den Nachschlagewerken gemacht werden, hier dargestellt werden. Denken Sie daran, dass Sie mehrere Quellinformationen austauschen müssen, um das Risiko von Fehlern zu reduzieren.