PHP利用反射实现参数绑定

思路:
通过new ReflectionMethod获取指定类指定方法需要的参数,然后判断$_GET中是否包含该参数。最后通过call_user_func_array调用类的方法并传入参数。

<?php

class Index
{
    public function edit($a=0,$b=0)
    {
        var_dump($a,$b);
    }
}
$class = new ReflectionClass('Index');
$object = $class->newInstance();

$method = new \ReflectionMethod('Index', 'edit');
$methodParams = $method->getParameters();
$params = [];
foreach ($methodParams as $methodParam){
    if(isset($_GET[$methodParam->getName()])){
        $params[] = $_GET[$methodParam->getName()];
    }
}
call_user_func_array([$object, 'edit'], $params);

通过以上方法,按照变量名进行参数绑定的参数必须和URL中传入的变量名称一致,但是参数顺序不需要一致。

实现效果:

发表评论

邮箱地址不会被公开。 必填项已用*标注