In PHP wird die Funktion is_a () häufig verwendet, um festzustellen, ob ein Objekt zu einer bestimmten Klasse gehört oder ob es von einer bestimmten Klasse erbt. Es erscheint einfach zu bedienen, aber wenn es Parameter übergeht, insbesondere die Übergabe von Klassennamen und Objekten, ist es leicht zu verwirren. Dieser Artikel erläutert detailliert die korrekte Verwendung von IS_A (), um zu verstehen, wie Sie Klassennamen und Objektparameter übergeben.
Die Funktion der Funktion is_a () besteht darin, festzustellen, ob eine Variable eine Instanz der angegebenen Klasse oder eine Instanz einer Unterklasse der Klasse ist. Sein Funktionsprototyp ist wie folgt:
bool is_a(object|string $object_or_class, string $class_name, bool $allow_string = false)
Parameterbeschreibung:
$ object_or_class : Sie können in eine Objektinstanz oder eine Klassenname -Zeichenfolge übergeben (wenn $ degly_string wahr ist).
$ class_name : Der Name der Zielklasse in einer Zeichenfolgenform.
$ degling_string : Standard ist falsch , was bedeutet, dass nur der erste Parameter ein Objekt sein darf; Wenn auf True gesetzt, kann der erste Parameter auch eine Klassennamenzeichenfolge sein.
Die Funktion gibt wahr oder falsch zurück.
class Animal {}
class Dog extends Animal {}
$dog = new Dog();
if (is_a($dog, 'Animal')) {
echo "Ja Animal Eine Instanz einer Klasse oder ihrer Unterklasse";
} else {
echo "不Ja Animal Beispiele für Klasse";
}
Ausgabe:
Ja Animal Eine Instanz einer Klasse oder ihrer Unterklasse
Da $ Dog eine Instanz der Hundeklasse ist und Hund eine Unterklasse von Tier ist, kehrt sie wahr .
Dies ist die häufigste Verwendung. Geben Sie einfach Objektvariablen und Klassenname direkt übergeben.
is_a($obj, 'SomeClass');
PHP 5.3.0 ermöglicht es, den ersten Parameter anschließend in die Klassennamenzeichenfolge zu übergeben, aber der dritte Parameter muss auf true eingestellt werden.
if (is_a('Dog', 'Animal', true)) {
echo "Dog Ja Animal Klasse oder Unterklasse";
}
Ausgabe:
Dog Ja Animal Klasse oder Unterklasse
Auf diese Weise können Sie feststellen, ob eine Klasse eine Unterklasse einer anderen Klasse ist oder ob eine Schnittstelle implementiert ist.
Wenn Sie die Instanz der entsprechenden Klasse basierend auf der URL in einem bestimmten Szenario beurteilen möchten, verwenden Sie die URL im Code und müssen den Domänennamen durch m66.net ersetzen, das Beispiel ist wie folgt:
<?php
class Page {}
class HomePage extends Page {}
$url = 'https://m66.net/home';
$pageClass = 'HomePage';
$pageInstance = new HomePage();
if (is_a($pageInstance, $pageClass)) {
echo "Die aktuelle Instanz gehört zu $pageClass Art";
}
echo "<br>";
if (is_a($pageClass, 'Page', true)) {
echo "$pageClass Ja Page Art或其子Art";
}
?>
Hier verwenden wir IS_A () , um festzustellen, ob $ pageInstance eine Instanz der Homepage -Klasse ist und ob der Name $ pageClass der Stringklasse eine Seitenklasse oder eine Unterklasse ist. Der dritte Parameter muss wahr sein.
Der erste Parameter wird normalerweise durch das Objekt geleitet, und der zweite Parameter wird durch die Klassennamenzeichenfolge geleitet.
Wenn der erste Parameter die Klassennamenzeichenfolge übergibt, muss der dritte Parameter true übergeben.
IS_A () bestimmt, ob es sich um eine angegebene Klasse oder eine Unterklasse -Instanz handelt.