首页 > 开发 > PHP > 正文

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

2024-05-04 22:19:58
字体:
来源:转载
供稿:网友

最近在开发过程中需要获取某个类方法的参数数量、名称及参数顺序,好根据参数的名称来从$_GET里取值。

如方法原型为test($uid,$score), 那么我就知道需要需要从$_GET取
代码如下:
$uid = $_GET['uid'];

$score = $_GET['score'];

然后调用方法$obj->test($uid,$score)

当然前提是约定好了参数名称和get方法传值变量名一致。

采用PHP的反射API,获得函数参数名称和参数默认值的方法如下:
代码如下:
<?php 
class testClass{ 
     
    public function testFunc($param1,$param2=0){ 
         
    } 

 
$method = new ReflectionMethod('testClass', 'testFunc'); 
$params = $method--->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概览:
代码如下:
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手册)
代码如下:
①Reflection类 
<?php 
class Reflection 

public static mixed export(Reflector r [,bool return]) 
//导出一个类或方法的详细信息 
public static array getModifierNames(int modifiers) 
//取得修饰符的名字 

?> 
 
②ReflectionException类 
 
该类继承标准类,没特殊方法和属性。 
 
③ReflectionFunction类 
<?php 
class ReflectionFunction implements Reflector 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表