我正在寻找一种在函数中返回多个参数的方法。我正在为我的MVC框架构建一个路由系统。目前,我正在研究一种基于HTTP请求在函数中获得无限参数的方法;
这是我被卡住的部分。看看代码的底部$controller->{$route->getMethod()}();
控制器调用一个函数,现在我需要得到一个在de函数中添加值的解决方案。我可以执行$controller->{$route->getMethod()}($route->getArgs();
但之后只会设置第一个参数。如何在该函数中返回多个参数?
public function dispatchRoute(Route $route)
{
if(!file_exists($this->pathToController . '/' . ucfirst($route->getController()) . 'Controller.php'))
throw new 'Exception(
sprintf('Cannot find %sController.php in directory %s', $route->getController(), $this->pathToController));
require_once($this->pathToController . '/' . ucfirst($route->getController()) . 'Controller.php');
$controller = $route->getController() . 'Controller';
$controller = new $controller();
if(!method_exists($controller, $route->getMethod()))
throw new 'Exception(sprintf('Method %s is not found in %sController', $route->getMethod(), $route->getController()));
$dataHandler = new RequestDataHandler();
$dataHandler->getRequestArguments();
$controller->{$route->getMethod()}();
}
使用
$data = $someclass->returnThreeValues();
foo($data[0], $data[1], $data[2];
或
list($p1, $p2, $p3) = $someClass->returnThreeValues();
foo($p1, $p2, $p3);
或者(只是为了完整,以上选项是首选)
call_user_func_array('foo', $someClass->returnThreeValues());
让
function returnThreeValues() {
// Some code to calculate $a, $b, $c
return array($a, $b, $c);
}
返回数组。
function foo($bar1, $bar2, $bar3){
{
return array($bar1, $bar2, $bar3);
}
你的例子没有任何回报。。只是打印。
查找
call_user_func_array(array($controller, $route->getMethod()), array($dataHandler->getRequestArguments()));