Heim >Backend-Entwicklung >PHP-Tutorial >PHP-Variablen und Typerweiterungen wie Klassen und Objekte
1. Übersicht und Installation
Mit diesen Funktionen können Sie Informationen über Klassen und Objektinstanzen abrufen. Sie können den Klassennamen, zu dem das Objekt gehört, sowie seine Mitgliedseigenschaften und -methoden abrufen. Mithilfe dieser Funktionen können Sie nicht nur die Beziehung zwischen Objekten und Klassen ermitteln, sondern auch deren Vererbungsbeziehung (z. B. von welcher Klasse eine Objektklasse erbt).
Eine detaillierte Beschreibung, wie Objekte und Klassen in PHP implementiert und verwendet werden, finden Sie in den objektorientierten Kapiteln.
Für die Nutzung dieser Funktionen ist keine Installation erforderlich, sie sind Teil des PHP-Kerns.
2. Vollständige Liste der Klassen- und Objektfunktionen
__autoload – Versuchen Sie, eine undefinierte Klasse zu laden
call_user_method_array – Rufen Sie eine Benutzermethode auf, während Sie ein Parameterarray übergeben (veraltet)
call_user_method – Rufen Sie eine Benutzermethode für ein bestimmtes Objekt auf (veraltet)
class_alias – Erstellen Sie einen Alias für eine Klasse
class_exists – Überprüfen Sie, ob die Klasse definiert ist
get_claimed_class – Der Name der Klasse für die späte statische Bindung („Late Static Binding“)
get_class_methods – Gibt ein Array bestehend aus den Methodennamen der Klasse zurück
get_class_vars – Gibt ein Array bestehend aus zurück die Standardattribute der Klasse
get_class – Gibt den Klassennamen des Objekts zurück
get_declared_classes – Gibt ein Array zurück, das aus den Namen definierter Klassen besteht
get_declared_interfaces – Gibt ein Array zurück enthält alle deklarierten Schnittstellen
get_declared_traits – Gibt ein Array aller definierten Merkmale zurück
get_object_vars – Gibt ein assoziatives Array zurück, das aus Objektattributen besteht
get_parent_class – Gibt den Namen der übergeordneten Klasse eines zurück Objekt oder Klasse
interface_exists – Überprüfen Sie, ob die Schnittstelle definiert wurde
is_a – Gibt TRUE zurück, wenn das Objekt zu dieser Klasse gehört oder die Klasse die übergeordnete Klasse dieses Objekts ist
is_subclass_of – Wenn dieses Objekt ein untergeordnetes Objekt dieser Klasse ist, gibt es TRUE zurück
method_exists – Überprüfen Sie, ob die Methode der Klasse existiert
property_exists – Überprüfen Sie, ob das Objekt oder die Klasse die Eigenschaft hat
trait_exists – Überprüfen Sie, ob das angegebene Merkmal vorhanden ist
3 Verwendungsbeispiel
In diesem Beispiel definieren wir zunächst eine Basisklasse und eine Erweiterung der Klasse. Diese Basisklasse beschreibt ein gewöhnliches Gemüse hinsichtlich seiner Essbarkeit und seiner Farbe. Die Unterklasse Spinat fügt eine Methode zum Kochen und eine weitere Methode zum Überprüfen, ob es gekocht ist, hinzu.
Beispiel Nr. 1 „classes.inc“
<?php // base class with member properties and methods class Vegetable { var $edible; var $color; function Vegetable($edible, $color="green") { $this->edible = $edible; $this->color = $color; } function is_edible() { return $this->edible; } function what_color() { return $this->color; } } // end of class Vegetable // extends the base class class Spinach extends Vegetable { var $cooked = false; function Spinach() { $this->Vegetable(true, "green"); } function cook_it() { $this->cooked = true; } function is_cooked() { return $this->cooked; } } // end of class Spinach ?>
Als nächstes instanziieren wir zwei Objekte aus diesen Klassen und drucken ihre Informationen aus, einschließlich der Vererbungsbeziehung ihrer Klassen. Gleichzeitig haben wir auch einige Hilfsfunktionen definiert, hauptsächlich um diese Variablen schön auszudrucken.
Beispiel #2 test_script.php
<?php include "classes.inc"; // 实用函数 function print_vars($obj) { foreach (get_object_vars($obj) as $prop => $val) { echo "\t$prop = $val\n"; } } function print_methods($obj) { $arr = get_class_methods(get_class($obj)); foreach ($arr as $method) { echo "\tfunction $method()\n"; } } function class_parentage($obj, $class) { if (is_subclass_of($GLOBALS[$obj], $class)) { echo "Object $obj belongs to class " . get_class($$obj); echo " a subclass of $class\n"; } else { echo "Object $obj does not belong to a subclass of $class\n"; } } // 实例化 2 对象 $veggie = new Vegetable(true, "blue"); $leafy = new Spinach(); // 打印这些对象的信息 echo "veggie: CLASS " . get_class($veggie) . "\n"; echo "leafy: CLASS " . get_class($leafy); echo ", PARENT " . get_parent_class($leafy) . "\n"; // 显示蔬菜的属性 echo "\nveggie: Properties\n"; print_vars($veggie); // and leafy methods echo "\nleafy: Methods\n"; print_methods($leafy); echo "\nParentage:\n"; class_parentage("leafy", "Spinach"); class_parentage("leafy", "Vegetable"); ?>
Es ist wichtig zu beachten, dass im obigen Beispiel das Objekt $leafy eine Instanz von Spinach (einer Unterklasse von Gemüse) ist und Das andere Skript Der letzte Teil gibt die folgenden Informationen aus:
[...] Parentage: Object leafy does not belong to a subclass of Spinach Object leafy belongs to class spinach a subclass of Vegetable