In der programmorientierten PHP-Objektprogrammierung ist häufig festzustellen, ob ein Objekt zu einer bestimmten Klasse gehört, oder um die Beziehung des Objekts auf Klassenebene zu bestimmen. is_a () und get_class () sind zwei sehr häufig verwendete Funktionen, kombiniert mit ihnen können Sie die Beziehung zwischen Klassenhierarchie eines Objekts effektiv beurteilen. In diesem Artikel wird die Verwendung dieser beiden Funktionen im Detail vorgestellt und Beispiele verwendet, um zu veranschaulichen, wie sie zusammen verwendet werden.
Die Funktion is_a () wird verwendet, um zu prüfen, ob ein Objekt eine Instanz einer Klasse ist oder ob die Klasse des Objekts von dieser Klasse erbt. Seine Syntax ist wie folgt:
bool is_a(object $object, string $class_name, bool $allow_string = false)
$ Objekt : Das zu überprüfende Objekt.
$ class_name : Zielklassenname.
$ degly_string : Wenn wahr , darf das erste Argument eine Klassennamenzeichenfolge sein, nicht nur ein Objekt.
is_a () überprüft die Klasse, zu der das Objekt gehört, und seine übergeordnete Klassenkette. Solange einer von ihnen erfüllt ist, wird es wahr zurückkehren.
Die Funktion get_class () gibt den tatsächlichen Klassennamen eines Objekts zurück. Die Syntax ist wie folgt:
string get_class(object $object)
Es gibt nur den aktuellen Klassennamen des Objekts zurück und betrifft nicht die übergeordnete Klasse.
Die Verwendung von is_a () allein konnte feststellen, ob ein Objekt zu einer bestimmten Klasse oder seiner übergeordneten Klasse gehört. Aber manchmal müssen wir beurteilen:
Ob das Objekt eine bestimmte Klasse ist (Vererbung wird nicht berücksichtigt)
Ob das Objekt eine Unterklasse einer bestimmten Klasse oder dieser Klasse ist
Bestimmen Sie die hierarchischen Unterschiede in den Vererbungsbeziehungen
Zu diesem Zeitpunkt kann die Kombination von get_class () und is_a () eine Vielzahl von Urteilslogik flexibel implementieren.
Angenommen, es gibt die folgende Klassenstruktur:
class Animal {}
class Dog extends Animal {}
class Poodle extends Dog {}
$poodle = new Poodle();
if (is_a($poodle, 'Dog')) {
echo 'Dies ist aDogoderDogUnterklasse Instanzen von';
}
Ausgabe:
Dies ist aDogoderDogUnterklasse Instanzen von
if (get_class($poodle) === 'Dog') {
echo 'Dies ist aDogBeispiele für Klasse';
} else {
echo 'NEINDogKlasseninstanz';
}
Ausgabe:
NEINDogKlasseninstanz
if (is_a($poodle, 'Dog') && get_class($poodle) !== 'Dog') {
echo 'Das istDogUnterklasse Instanzen von,但NEINDogKlasse selbst';
}
Ausgabe:
Das istDogUnterklasse Instanzen von,但NEINDogKlasse selbst
In einer Geschäftslogik kann dies erforderlich sein:
Logik für eine Klasse selbst ausführen
Führen Sie unterschiedliche Logik für Unterklassen aus
Das gemeinsame Urteil von IS_A () und get_class () kann verwendet werden, um es genau zu steuern.
IS_A () unterstützt den dritten Parameter, um das Beurteilung des String -Klassennamens zuzulassen, was flexibler ist.
Get_class () akzeptiert nur Objektparameter und kann keine direkten Saiten übergeben.
Klassennamen sind Fall sensibel und achten auf die Konsistenz des Falles.
Nach PHP 5.3.0 kann IS_A () Zeichenfolgen als erster Parameter akzeptieren und mit dem dritten Parameter true verwendet werden.
Durch die Kombination von is_a () und get_class () können Sie die klassenhierarchie -Beziehung in PHP flexibel und genau beurteilen:
is_a () bestimmt, ob es zu einer bestimmten Klasse oder ihrer Unterklasse gehört.
get_class () bestimmt den spezifischen Klassennamen des Objekts.
Die gemeinsame Verwendung kann bestimmte Kategorien von Erbkategorien unterscheiden, um die diversifizierten Geschäftsbedürfnisse zu erfüllen.