思路:
通过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中传入的变量名称一致,但是参数顺序不需要一致。
实现效果: