找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 324|回复: 0
打印 上一主题 下一主题

PHP反射使用实例和PHP反射API的中文说明

[复制链接]

2647

主题

2647

帖子

7881

积分

论坛元老

Rank: 8Rank: 8

积分
7881
跳转到指定楼层
楼主
发表于 2018-2-14 05:56:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            最近在开发过程中需要获取某个类方法的参数数量、名称及参数顺序,好根据参数的名称来从$_GET里取值。
如方法原型为test($uid,$score), 那么我就知道需要需要从$_GET取
[U]复制代码[/U] 代码如下:
$uid = $_GET['uid'];
$score = $_GET['score'];
然后调用方法$obj->test($uid,$score)
当然前提是约定好了参数名称和get方法传值变量名一致。
采用PHP的反射API,获得函数参数名称和参数默认值的方法如下:
[U]复制代码[/U] 代码如下:
getParameters();  
foreach ($params as $param) {  
    echo 'param name: ' . $param->getName(),"\n";  
    if ($param->isOptional()) {  
        echo 'Default value: ' . $param->getDefaultValue(),"\n";  
    }  
}  
下面是PHP反射API的介绍:
1、用途:
该扩展分析php程序,导出或提取出关于类、方法、属性、参数等的详细信息,包括注释。
Reflection可以说是对php库函数:“Classes/Objects 类/对象函数”的一个扩展。
主要用在通过程序检测现有php程序内部关于类、方法等信息,并做出处理。
2、API概览:
[U]复制代码[/U] 代码如下:
class Reflection { }  
interface Reflector { }  
class ReflectionException extends Exception { }  
class ReflectionFunction implements Reflector { }  
class ReflectionParameter implements Reflector { }  
class ReflectionMethod extends ReflectionFunction { }  
class ReflectionClass implements Reflector { }  
class ReflectionObject extends ReflectionClass { }  
class ReflectionProperty implements Reflector { }  
class ReflectionExtension implements Reflector { }  
3、详细说明:(例子详见php手册)
[U]复制代码[/U] 代码如下:
①Reflection类  
  
  
②ReflectionException类  
  
该类继承标准类,没特殊方法和属性。  
  
③ReflectionFunction类  
  
  
④ReflectionParameter类:  
  
  
⑤ReflectionClass类:  
getModifiers())进一步读取  
public bool isInstance(stdclass object)  
//测试传入的对象是否为该类的一个实例  
public stdclass newInstance(mixed* args)  
//创建该类实例  
public ReflectionClass getParentClass()  
//取得父类  
public bool isSubclassOf(ReflectionClass class)  
//测试传入的类是否为该类的父类  
public array getStaticProperties()  
//取得该类的所有静态属性  
public mixed getStaticPropertyValue(string name [, mixed default])  
//取得该类的静态属性值,若private,则不可访问  
public void setStaticPropertyValue(string name, mixed value)  
//设置该类的静态属性值,若private,则不可访问,有悖封装原则  
public array getDefaultProperties()  
//取得该类的属性信息,不含静态属性  
public bool isIterateable()  
public bool implementsInterface(string name)  
//测试是否实现了某个特定接口  
public ReflectionExtension getExtension()  
public string getExtensionName()  
}  
?>  
  
⑥ReflectionMethod类:  
  
  
⑦ReflectionProperty类:  
  
  
⑧ReflectionExtension类  
  
            
            
您可能感兴趣的文章:
  • PHP 反射机制实现动态代理的代码
  • 在PHP中使用反射技术的架构插件使用说明
  • 解析php中反射的应用
  • php反射应用示例
  • PHP反射机制用法实例
  • PHP类的反射用法实例
  • php利用反射实现插件机制的方法
  • PHP 反射(Reflection)使用实例
  • 详解php中反射的应用
  • php反射类ReflectionClass用法分析
  • PHP面向对象程序设计之类与反射API详解
  • php面向对象之反射功能与用法分析
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端