


Was ist das Prinzip des PHP-Reflexionsmechanismus? Detaillierte Erläuterung der Funktion des Reflexionsmechanismus
Dieser Artikel stellt hauptsächlich das Prinzip und die Verwendung des PHP-Reflexionsmechanismus vor und analysiert das Prinzip, die Verwendung und verwandte Aspekte des PHP-Reflexionsmechanismus in Form von Beispielen Notizen, Freunde in Not können sich darauf beziehen
Die Beispiele in diesem Artikel beschreiben die Prinzipien und die Verwendung des PHP-Reflexionsmechanismus. Teilen Sie es wie folgt als Referenz mit allen:
Reflexion
ObjektorientiertIn der Programmierung wird Objekten die Fähigkeit zur Selbstbeobachtung gegeben, und dieser Selbstbeobachtungsprozess ist Reflexion.
Reflexion, intuitives Verständnis besteht darin, den Ausgangspunkt und die Quelle anhand des Ankunftsorts zu finden. Beispielsweise können wir bei einem bloßen Objekt allein durch dieses Objekt erkennen, zu welcher Klasse es gehört und welche Methoden es hat.
Reflexion bezieht sich auf die Erweiterung der Analyse von PHP-Programmen im laufenden Zustand von PHP, das Exportieren oder Vorschlagen detaillierter Informationen zu Klassen, Methoden, Eigenschaften, Parametern usw., einschließlich Annotationen. Diese Funktion zum dynamischen Abrufen von Informationen und zum dynamischen Aufrufen von Objektmethoden wird als Reflexions-API bezeichnet.
So verwenden Sie die Reflection-API
<?php class person{ public $name; public $gender; public function say(){ echo $this->name," \tis ",$this->gender,"\r\n"; } public function set($name, $value) { echo "Setting $name to $value \r\n"; $this->$name= $value; } public function get($name) { if(!isset($this->$name)){ echo '未设置'; $this->$name="正在为你设置默认值"; } return $this->$name; } } $student=new person(); $student->name='Tom'; $student->gender='male'; $student->age=24;
Was sollen wir nun tun, um die Methode und die Attributliste dieses Schülerobjekts zu erhalten? Wie im folgenden Code gezeigt:
// 获取对象属性列表 $reflect = new ReflectionObject($student); $props = $reflect->getProperties(); foreach ($props as $prop) { print $prop->getName() ."\n"; } // 获取对象方法列表 $m=$reflect->getMethods(); foreach ($m as $prop) { print $prop->getName() ."\n"; }
Sie können anstelle der Reflection-API auch die Klassenfunktion verwenden, um ein assoziatives Array von Objekteigenschaften und weitere Informationen zurückzugeben:
// 返回对象属性的关联数组 var_dump(get_object_vars($student)); // 类属性 var_dump(get_class_vars(get_class($student))); // 返回由类的方法名组成的数组 var_dump(get_class_methods(get_class($student)));
If Dieses Objekt wird von anderen Seiten übergeben. Woher wissen Sie, zu welcher Kategorie es gehört? Sie können dies mit nur einer Codezeile erledigen:
// 获取对象属性列表所属的类 echo get_class($student);
Die Funktion der Reflection-API ist offensichtlich leistungsfähiger und kann sogar den Prototyp dieser Klasse wiederherstellen, einschließlich der Zugriffsberechtigungen von Methoden usw ., wie zum Beispiel:
// 反射获取类的原型 $obj = new ReflectionClass('person'); $className = $obj->getName(); $Methods = $Properties = array(); foreach($obj->getProperties() as $v) { $Properties[$v->getName()] = $v; } foreach($obj->getMethods() as $v) { $Methods[$v->getName()] = $v; } echo "class {$className}\n{\n"; is_array($Properties)&&ksort($Properties); foreach($Properties as $k => $v) { echo "\t"; echo $v->isPublic() ? ' public' : '',$v->isPrivate() ? ' private' : '', $v->isProtected() ? ' protected' : '', $v->isStatic() ? ' static' : ''; echo "\t{$k}\n"; } echo "\n"; if(is_array($Methods)) ksort($Methods); foreach($Methods as $k => $v) { echo "\tfunction {$k}(){}\n"; } echo "}\n";
Ausgabe wie folgt:
class person { public gender public name function get(){} function set(){} function say(){} }
Darüber hinaus gibt es Dutzende von Reflection-APIs im PHP-Handbuch Man kann sagen, dass die Reflexion den Prototyp einer Klasse oder eines Objekts vollständig beschreibt. Reflection kann nicht nur für Klassen und Objekte verwendet werden, sondern auch für Funktionen, Erweiterungsmodule, Ausnahmen usw.
Welche Rolle spielt die Reflexion?
Reflexion kann zur Dokumentenerstellung genutzt werden. Daher können Sie damit die Klassen in der Datei scannen und nacheinander Beschreibungsdokumente generieren.
Da Reflektion die interne Struktur einer Klasse erkennen kann, kann sie als Hook für die Implementierung von Plug-In-Funktionen verwendet werden? Oder ist es ein dynamischer Proxy?
Zum Beispiel:
<?php class mysql { function connect($db) { echo "连接到数据库${db[0]}\r\n"; } } class sqlproxy { private $target; function construct($tar) { $this->target[] = new $tar(); } function call($name, $args) { foreach ($this->target as $obj) { $r = new ReflectionClass($obj); if ($method = $r->getMethod($name)) { if ($method->isPublic() && !$method->isAbstract()) { echo "方法前拦截记录LOG\r\n"; $method->invoke($obj, $args); echo "方法后拦截\r\n"; } } } } } $obj = new sqlproxy('mysql'); $obj->connect('member');
In der normalen Entwicklung gibt es nicht viele Orte, an denen Reflexion verwendet wird: Eine dient dazu, das Objekt zu zu debuggen, die andere dazu Klasseninformationen erhalten. In der MVC- und Plug-In-Entwicklung ist die Verwendung von Reflektion sehr verbreitet, aber Reflektion ist auch sehr teuer. Missbrauchen Sie sie nicht, wenn Sie eine Alternative finden können.
PHP verfügt über die Token-Funktion, die über diesen Mechanismus einige Reflexionsfunktionen implementieren kann. Aus Sicht der Einfachheit und Flexibilität empfiehlt es sich, die bereits bereitgestellte Reflection-API zu verwenden.
Oft kann eine gute Verwendung von Reflektion den Code elegant und prägnant halten, aber Reflektion kann auch die Kapselung der Klasse zerstören, da Reflektion die Offenlegung von Methoden oder Eigenschaften erzwingen kann, die nicht verfügbar gemacht werden sollten Beide Vorteile sind auch Nachteile.
Das obige ist der detaillierte Inhalt vonWas ist das Prinzip des PHP-Reflexionsmechanismus? Detaillierte Erläuterung der Funktion des Reflexionsmechanismus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

Wenn Sie ein erfahrener PHP-Entwickler sind, haben Sie möglicherweise das Gefühl, dass Sie dort waren und dies bereits getan haben. Sie haben eine beträchtliche Anzahl von Anwendungen entwickelt, Millionen von Codezeilen debuggt und eine Reihe von Skripten optimiert, um op zu erreichen

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Eine Zeichenfolge ist eine Folge von Zeichen, einschließlich Buchstaben, Zahlen und Symbolen. In diesem Tutorial wird lernen, wie Sie die Anzahl der Vokale in einer bestimmten Zeichenfolge in PHP unter Verwendung verschiedener Methoden berechnen. Die Vokale auf Englisch sind a, e, i, o, u und sie können Großbuchstaben oder Kleinbuchstaben sein. Was ist ein Vokal? Vokale sind alphabetische Zeichen, die eine spezifische Aussprache darstellen. Es gibt fünf Vokale in Englisch, einschließlich Großbuchstaben und Kleinbuchstaben: a, e, ich, o, u Beispiel 1 Eingabe: String = "TutorialPoint" Ausgabe: 6 erklären Die Vokale in der String "TutorialPoint" sind u, o, i, a, o, ich. Insgesamt gibt es 6 Yuan

Dieses Tutorial zeigt, wie XML -Dokumente mit PHP effizient verarbeitet werden. XML (Extensible Markup-Sprache) ist eine vielseitige textbasierte Markup-Sprache, die sowohl für die Lesbarkeit des Menschen als auch für die Analyse von Maschinen entwickelt wurde. Es wird üblicherweise für die Datenspeicherung ein verwendet und wird häufig verwendet

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

Was sind die magischen Methoden von PHP? Zu den magischen Methoden von PHP gehören: 1. \ _ \ _ Konstrukt, verwendet, um Objekte zu initialisieren; 2. \ _ \ _ Destruct, verwendet zur Reinigung von Ressourcen; 3. \ _ \ _ Call, behandeln Sie nicht existierende Methodenaufrufe; 4. \ _ \ _ GET, Implementieren Sie den dynamischen Attributzugriff; 5. \ _ \ _ Setzen Sie dynamische Attributeinstellungen. Diese Methoden werden in bestimmten Situationen automatisch aufgerufen, wodurch die Code -Flexibilität und -Effizienz verbessert werden.
