Dieser Artikel stellt hauptsächlich die Verwendungsbeispiele von PHP Reflection (Reflection) vor. In diesem Artikel werden die Verwendungsbeispiele von ReflectionClass, ReflectionExtension, ReflectionFunction, ReflectionMethod, ReflectionObject, ReflectionParameter und anderen Klassen erläutert
PHP Reflection wird verwendet, um detaillierte Informationen über Klassen, Erweiterungen, Methoden, Funktionen, Objekte, Parameter und Eigenschaften zu erhalten.
Die ReflectionClass-Klasse ruft klassenbezogene Informationen ab, z. B. das Abrufen von Attributen, Methoden, Dokumentationskommentaren usw.
<?php 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; } } //导出类 ReflectionClass::export('Person'); $r = new ReflectionClass('Person'); //获取所有属性 print_r($r->getProperties()); /** * 获取指定属性 * ReflectionProperty::IS_STATIC * ReflectionProperty::IS_PUBLIC * ReflectionProperty::IS_PROTECTED * ReflectionProperty::IS_PRIVATE */ print_r($r->getProperties(ReflectionProperty::IS_PRIVATE)); //获取注释 print_r($r->getProperty('id')->getDocComment()); //获取方法 print_r($r->getMethods());
Die ReflectionExtension-Klasse wird verwendet, um erweiterungsbezogene Informationen zu erhalten
$re = new ReflectionExtension('Reflection'); print_r($re->getClasses()); //扩展的所有类 print_r($re->getClassNames()); //扩展所有类名 $dom = new ReflectionExtension('mysql'); print_r($dom->getConstants());//扩展常量 print_r($dom->getDependencies());//该扩展依赖 print_r($dom->getFunctions());//扩展方法 print_r($dom->getINIEntries());//扩展ini信息 print_r($dom->getName());//扩展名称 print_r($dom->getVersion());//扩展版本 print_r($dom->info());//扩展信息 print_r($dom->isPersistent());//是否是持久扩展 print_r($dom->isTemporary()); //是否是临时扩展
Benutzer der ReflectionFunction-Klasse erhalten funktionsbezogene Informationen
$rf = new ReflectionFunction('array_merge'); foreach($rf->getParameters() as $item) { echo $item . PHP_EOL; }
Benutzer der ReflectionMethod-Klasse erhalten methodenbezogene Informationen
class Person { public $name; /** * get name of person */ public function getName() { return $this->name; } public function setName($v) { $this->name = $v; } } $rm = new ReflectionMethod('Person', 'getName'); print_r($rm->isPublic()); print_r($rm->getDocComment());
Die ReflectionObject-Klasse wird verwendet, um objektbezogene Informationen abzurufen.
class Person { public $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } public function setName($v) { $this->name = $v; } } $a = new Person('a'); $ro = new ReflectionObject($a); print_r($ro->getMethods());
ReflectionParameter, um funktions- oder methodenparameterbezogene Informationen abzurufen.
class Person { public $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } public function setName($v) { $this->name = $v; } } $p = new ReflectionParameter(array('Person', 'setName'), 0); print_r($p->getPosition()); //0 print_r($p->getName()); //v
ReflectionProperty Ruft Informationen über die Eigenschaften der Klasse ab.
class Person { /** 测试 */ public $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } public function setName($v) { $this->name = $v; } } $p = new ReflectionProperty('Person', 'name'); print_r($p->getDocComment());
Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Studium aller hilfreich sein wird.
Verwandte Empfehlungen:
Wie man E-Mail-Inhalte mit PHP liest und regelmäßig abgleicht
PHP implementiert die Persistenzschicht Methoden
PHP implementiert einfache GET-, POST-, Cookie-, Session- und andere Funktionen
Das obige ist der detaillierte Inhalt vonBeschreiben Sie kurz die Verwendung von fünf Arten der PHP-Reflexion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!