我正在寻找一种在函数中返回多个参数的方法。 我正在为我的mvc框架构建一个路由系统。目前我正在研究一种基于http请求在函数中获取未分析参数的方法;
这是我坚持的部分。查看代码的底部 $控制器 - > {$为route-> getMethod()}();
控制器调用一个函数现在我需要一个解决方案来在de函数中添加值。我可以做$ controller-> {$ route-> getMethod()}($ route-> getArgs(); 但那时只会设置第一个参数。如何在该函数中返回多于1个参数?
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()}();
}
答案 0 :(得分:2)
返回数组。
function foo($bar1, $bar2, $bar3){
{
return array($bar1, $bar2, $bar3);
}
你的例子没有返回任何东西..只是打印。
答案 1 :(得分:2)
使用
$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);
}
答案 2 :(得分:0)
找到它
call_user_func_array(array($controller, $route->getMethod()), array($dataHandler->getRequestArguments()));