2013-12-07 129 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()));