IS_A (Objekt $ Objekt, String $ class_name, bool $ degling_string = false): bool
$ Objekt Objekt zu erkennen
$ class_name class Name Zeichenfolge
Geben Sie true zurück, wenn das Objekt zur Klasse oder ihrer Unterklasse gehört, ansonsten false zurückgeben
Beispiel:
class Animal {}
class Dog extends Animal {}
$dog = new Dog();
var_dump(is_a($dog, 'Dog')); // true
var_dump(is_a($dog, 'Animal')); // true,Weil Dog erben Animal
var_dump(is_a($dog, 'Cat')); // false
Angenommen, wir möchten feststellen, ob ein Objekt zu einem der Klassenhund , Katze oder Vogel gehört. Der häufigste Weg ist:
if (is_a($obj, 'Dog') || is_a($obj, 'Cat') || is_a($obj, 'Bird')) {
// Das Objekt gehört zu einer dieser drei Klassen
}
Wenn es viele Arten von Urteilsvermögen gibt, ist es unpraktisch zu schreiben und wird nicht der Wartung förderlich.
Wir können eine Funktion zusammenfassen, ein Array von Objekten und Klassennamen übergeben, und die Funktion gibt zurück, ob das Objekt zu einer dieser Klassen gehört.
function is_a_any($object, array $classNames): bool {
foreach ($classNames as $className) {
if (is_a($object, $className)) {
return true;
}
}
return false;
}
Beispiel der Nutzung:
$classes = ['Dog', 'Cat', 'Bird'];
if (is_a_any($obj, $classes)) {
echo "Das Objekt gehört zu einer der Klassen";
} else {
echo "Objekte gehören nicht zu diesen Klassen";
}
Die Klassennamen von PHP sind unempfindlich, aber aus Gründen der Strenge können wir bei der Beurteilung einheitlich einheitlich zuweisen:
function is_a_any($object, array $classNames): bool {
foreach ($classNames as $className) {
if (is_a($object, $className)) {
return true;
}
}
return false;
}
Tatsächlich ist IS_A () selbst bereits von Fall unempfindlich, sodass keine zusätzliche Verarbeitung durchgeführt werden muss.
Wenn Sie auch feststellen möchten, ob das Objekt eine bestimmte Schnittstelle implementiert hat, ist IS_A () ebenfalls anwendbar.
<?php
class Dog {}
class Cat {}
class Bird {}
class Bulldog extends Dog {}
function is_a_any($object, array $classNames): bool {
foreach ($classNames as $className) {
if (is_a($object, $className)) {
return true;
}
}
return false;
}
$bulldog = new Bulldog();
$checkClasses = ['Cat', 'Bird', 'Dog'];
if (is_a_any($bulldog, $checkClasses)) {
echo "Das Objekt gehört zu einer der angegebenen Klassen";
} else {
echo "Objekte gehören nicht zu diesen Klassen";
}
Auslaufergebnisse:
Das Objekt gehört zu einer der angegebenen Klassen
Weil Bulldog eine Unterklasse von Hund ist.
IS_A () wird verwendet, um festzustellen, ob ein Objekt zu einer bestimmten Klasse oder seiner Unterklasse gehört.
Verwenden Sie bei der Beurteilung mehrerer Klassen die Funktion der Schleifenkapselung is_a_any (), um das Klassenname -Array zu übergeben
Flexible und prägnante Funktionen, leicht zu warten und zu erweitern
Durch die Einschränkung solcher Funktionen ist der Code eleganter und leicht zu verstehen und eine praktische Technik, die häufig in der Entwicklung verwendet wird.