我在MVC结构中使用call_user_func_array
指向控制器和方法并传递URL的参数:
// At this point, $url is an array with nothing but parameters
$this->params = $url ? array_values($url) : []; //
call_user_func_array([$this->controller, $this->method], $this->params);
现在当我使用它时:
class Home extends Controller {
public function index($param1=null, $param2=null) { // Ugly...
// .. continue
有没有办法将所有参数作为单个数组发送到类方法?不知道是否有任何参数可以开始,如果有,那就不知道有多少参数。我不想这样做:
public function index($param1=null, $param2=null, $param3=null, $param4=null) {
我希望这样做:
public function index($params) {
if (isset($params[0])) {
答案 0 :(得分:1)
很明显:
call_user_func_array(
[$this->controller, $this->method],
[$this->params]
);
答案 1 :(得分:0)
我认为你可以通过func_get_args获得传递给函数的所有参数。这只返回所有参数的数组,而不需要在paranthesis中指定预期的args。