如何编写一个将数组作为URL参数发送的控制器?

时间:2014-09-29 11:21:50

标签: php arrays parameter-passing

在某些MVC平台中,控制器方法接受URL的内容作为正斜杠分隔的元素列表,作为参数接收,例如

 site.com/controller/method/var1/var2

有关联的控制器:

class Controller

  function method(var1, var2){
  }
}

但是我怎样才能实现这种编码呢?我希望从数组开始,并将参数化列表发送到函数,即

$args = array("one"=>"cheese","two"=>"eggs");

php_function("myfunction",$args);

myfunction内,我会

function myfunction($one, $two){
}

我知道func_get_args接受了未知数量的参数。除{/ p>外,user_call_func很有用

user_call_func("myfunction",$args);

...导致第一个参数包含一个参数数组,与函数内调用的func_get_args没有区别。

extract无法正常工作,因为我需要将数组作为函数内的变量接收。

2 个答案:

答案 0 :(得分:1)

call_user_func_array接受方法描述和参数数组,并返回调用函数的结果。我认为它将按顺序从数组中获取参数,而不是名称。在使用它之前,您应该以正确的顺序组装一个参数数组,并且可能验证缺少的参数。

答案 1 :(得分:0)

我已设法通过以下方式创建您的所需。

class BootStrap {

private $controller = 'NameOfIle.php';
private $method = 'function()';
private $params = array('sdfds' => 'dsfdsf', 'sdfdsfsdfdsfsd' => 'sdfdsfds');


public function __construct() {
  call_user_func_array(array($this->controller, $this->method), $this->params);
 }
}