2013-12-07 89 views
0

我正在寻找一种方法来返回函数中的多个参数。 我正在为我的mvc框架构建一个路由系统。目前,我正在努力在基于http请求的函数中获取非实参的参数;函数返回多个值php

这是我坚持的部分。在底部的代码 $ controller - > {$ route-> getMethod()}();

控制器调用一个函数现在我需要得到一个解决方案来增加de函数中的值。我可以做$控制器 - > {$ 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()}(); 
} 
+1

请澄清问题 –

+0

我需要多iple返回args IN函数($ 1,$ 2,$ 3), –

+0

这听起来就像你想通过你的变量作为参考,http://php.net/manual/en/language.references.pass.php – Teson

回答

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

返回数组。

function foo($bar1, $bar2, $bar3){ 
{ 
    return array($bar1, $bar2, $bar3); 
} 

您的例子不返回任何东西..只是打印。

0

搜寻

call_user_func_array(array($controller, $route->getMethod()), array($dataHandler->getRequestArguments()));