在PHP中的一个函数中返回多个值


Return multiple values in a function in PHP

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