Heim >Backend-Entwicklung >PHP-Tutorial >Beispielcode-Analyse des PHP-Reflexionsmechanismus
In diesem Artikel wird hauptsächlich der Reflexionsmechanismus von PHP vorgestellt, die Funktionen und Prinzipien des PHP-Reflexionsmechanismus anhand von Beispielen detailliert analysiert und Attribute und Anmerkungen , methodenbezogene Betriebstipps, Freunde in Not können sich darauf beziehen
Dieser Artikel beschreibt den Reflexionsmechanismus von PHP anhand von Beispielen. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:Einführung:
PHP5 hat eine neue Funktion hinzugefügt: Reflection. Mit dieser Funktion kann PHPKlasse, Schnittstelle, Funktion, Methode und Erweiterung rückentwickeln. Über den PHP-Code können Sie alle Informationen eines bestimmten Objekts abrufen und mit diesem interagieren.
Was ist Reflexion?
Es bezieht sich auf die Erweiterung der Analyse von PHP-Programmen im laufenden Zustand von PHP und das Exportieren oder Extrahieren detaillierter Informationen zu Klassen, Methoden, Eigenschaften, Parametern usw., einschließlich Kommentaren. Diese Funktion zum dynamischen Abrufen von Informationen und zum dynamischen Aufrufen von Methoden vonObjekten wird als ReflectionAPI bezeichnet. Reflection ist eine API zur Manipulation des objektorientiertenParadigmas Modell. Sie ist sehr leistungsfähig und kann uns beim Erstellen komplexer und skalierbarer Anwendungen helfen.
Zu seinen Verwendungsmöglichkeiten gehören:Automatisches Laden von Plug-Ins, automatische Generierung von Dokumenten und kann sogar zur Erweiterung der PHP-Sprache verwendet werden.
Die PHP-Reflection-API besteht aus mehreren Klassen, die uns helfen, auf die Metadaten des Programms zuzugreifen oder mit zugehörigen Anmerkungen zu interagieren. Mithilfe der Reflexion können wir die von der Klasse implementierten Methoden abrufen, eine Instanz der Klasse erstellen (anders als beim Erstellen mitnew), eine Methode aufrufen (ebenfalls anders als beim regulären Aufruf) und Parameter übergeben und rufen Sie dynamisch die neue 🎜>StatischeMethode auf.
Reflection API ist die integrierte OOP-Technologieerweiterung von PHP, einschließlich einiger Klassen, Ausnahmen und Schnittstellen. Wenn sie zusammen verwendet werden, können sie uns bei der Analyse anderer Klassen, Schnittstellen, Methoden usw. helfen. Eigenschaften, Methoden und Erweiterung. Diese Oop-Erweiterungen werden als Reflection bezeichnet.
Über ReflectionClass können wir die folgenden Informationen der Person-Klasse erhalten:
1) KonstantenInhalte
2) Eigenschaften-Eigenschaftsnamen
3) Methode Namen Statisch
4) EigenschaftenStatisch Eigenschaften
5) Namespace Namespace
6) Ob die Personenklasse endgültig oder abstrakt
Beispiel
class Person { /** * For the sake of demonstration, we"re setting this private */ private $_allowDynamicAttributes = false; /** type=primary_autoincrement */ protected $id = 0; /** type=varchar length=255 null */ protected $name; /** type=text null */ protected $biography; public function getId() { return $this->id; } public function setId($v) { $this->id = $v; } public function getName() { return $this->name; } public function setName($v) { $this->name = $v; } public function getBiography() { return $this->biography; } public function setBiography($v) { $this->biography = $v; } }Um es wiederzugeben, übergeben Sie einfach den Klassennamen „Person“ an ReflectionClass:
$class = new ReflectionClass('Person');//建立 Person这个类的反射类 $instance = $class->newInstanceArgs($args);//相当于实例化Person 类
1) Eigenschaften abrufen (Eigenschaften):
$properties = $class->getProperties(); foreach($properties as $property) { echo $property->getName()."\n"; } // 输出: // _allowDynamicAttributes // id // name // biographyStandardmäßig ruft ReflectionClass alle Eigenschaften ab, einschließlich privater und geschützter Eigenschaften. Wenn Sie nur das private Attribut erhalten möchten, müssen Sie einen zusätzlichen Parameter übergeben:
$private_properties = $class->getProperties(ReflectionProperty::IS_PRIVATE);Verfügbare Parameterliste:
ReflectionProperty::IS_STATICReflectionProperty:: IS_PUBLIC
ReflectionProperty::IS_PROTECTED
ReflectionProperty::IS_PRIVATE
abgerufen werden. $property->getName()
2) Kommentare abrufen:
Sie können die Kommentare über getDocComment an die Unterkunft schreiben lassen.foreach($properties as $property) { if($property->isProtected()) { $docblock = $property->getDocComment(); preg_match('/ type\=([a-z_]*) /', $property->getDocComment(), $matches); echo $matches[1]."\n"; } } // Output: // primary_autoincrement // varchar // text
3) Holen Sie sich die Methoden der Klasse
Holen Sie sich die Methoden: Holen Sie sich alle Methoden der Klasse über. getMethods()
4) Ausführungsklassenmethode:
Das obige ist der detaillierte Inhalt vonBeispielcode-Analyse des PHP-Reflexionsmechanismus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!