PHP5 fügt eine neue Funktion hinzu: Reflection. Mit dieser Funktion können Programmierer
Klassen, Schnittstellen, Funktionen, Methoden und Erweiterungen zurückentwickeln [Unterstützung für Erweiterungsbibliotheken].
Über den PHP-Code können Sie alle Informationen eines Objekts abrufen und mit ihm interagieren.
Nehmen Sie die folgende Personenklasse an:
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; } }
Über ReflectionClass können wir die folgenden Informationen der Personenklasse erhalten:
Konstanten
Eigenschaftseigenschaften
Methodennamen
Statische Eigenschaften 🎜>
$class = new ReflectionClass('Person');
Standard In diesem Fall ruft ReflectionClass alle Eigenschaften ab, einschließlich privater und geschützter. Wenn Sie nur das private Attribut erhalten möchten, müssen Sie einen zusätzlichen Parameter übergeben:
$properties = $class->getProperties(); foreach($properties as $property) { echo $property->getName()."\n"; } // 输出: // _allowDynamicAttributes // id // name // biography
Verfügbare Parameterliste:
$private_properties = $class->getProperties(ReflectionProperty::IS_PRIVATE);
Es ist ein bisschen unglaublich. Sie können sogar Kommentare erhalten.
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
* Methoden (Methoden) abrufen
: Alle Methoden der Klasse über getMethods() abrufen. Was zurückgegeben wird, ist einArray von ReflectionMethod-Objekten. Keine Demonstrationen mehr.
* Rufen Sie abschließend die Methode in der Klasse über ReflectionMethod auf.
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Beispiels für den Reflexionsmechanismus von PHP Reflection. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!