이 글에서는 주로 PHP Reflection(Reflection)의 사용 예를 소개합니다. 이 글에서는 ReflectionClass, ReflectionExtension, ReflectionFunction, ReflectionMethod, ReflectionObject, ReflectionParameter 및 기타 클래스의 사용 예를 설명합니다. 필요한 친구들이 참고할 수 있습니다.
PHP Reflection이 사용됩니다. 클래스, 확장 세부정보, 메서드, 함수, 개체, 매개변수, 속성을 얻으려면
ReflectionClass 클래스는 속성, 메소드, 문서 주석 등 클래스 관련 정보를 얻습니다.
<?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());
ReflectionExtension 클래스는 확장 관련 정보를 얻는 데 사용됩니다
$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()); //是否是临时扩展
ReflectionFunction 클래스 사용자는 함수 관련 정보를 얻습니다.
$rf = new ReflectionFunction('array_merge'); foreach($rf->getParameters() as $item) { echo $item . PHP_EOL; }
ReflectionMethod 클래스 사용자는 메소드 관련 정보를 얻습니다.
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());
ReflectionObject 클래스는 객체 관련 정보를 얻는 데 사용됩니다.
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는 함수나 메소드를 얻기 위해 매개변수에 대한 정보를 제공합니다.
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 클래스 속성에 대한 정보를 가져옵니다.
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());
요약: 위 내용은 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되었으면 좋겠습니다.
관련 권장 사항:
PHP에서 이메일 콘텐츠를 읽고 정기적으로 일치시키는 방법
PHP는 간단한 GET, POST, 쿠키, 세션 및 기타 기능을 구현합니다.
위 내용은 다섯 가지 유형의 PHP 리플렉션 사용을 간략하게 설명합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!