php反射应用,php 反射(Reflection)使用实例

摘要:这篇文章主要介绍了PHP 反射(Reflection)使用实例,本文讲解了ReflectionClass、ReflectionExtension、 ReflectionFunction、ReflectionMethod、ReflectionObject、ReflectionParameter等类的使用实例,需要的朋友可以参考下PHP Reflection是用于获取类、扩展、方法、函数、对象、参数、

这篇文章主要介绍了PHP 反射(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 反射(Reflection)使用实例请关注PHP中文网(www.php.cn)其他文章!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值