在函数php中返回多个值

时间:2013-12-07 23:21:13

标签: php

我正在寻找一种在函数中返回多个参数的方法。 我正在为我的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()}();
}

3 个答案:

答案 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()));