我收到以下错误:警告:Call_User_Func_ARRAY()正好需要2个参数,其中3个在

时间:2019-12-06 作者:molly
<?php

class App {
    protected $controller = \'Home\';
    protected $method = \'index\';
    protected $params = [];

    public function __construct()
    {
        $url = $this->parseURL();

        // controller
        if(file_exists(\'../app/controllers/\' . $url[0] . \'.php\') ) {
            $this->controller = $url[0];
            unset($url[0]);
        }

        require_once \'../app/controllers/\' . $this->controller . \'.php\';
        $this->controller = new $this->controller;

        // method
        if( isset($url[1]) ) {
            if( method_exists($this->controller, $url[1]) ) {
                $this->method = $url[1];
                unset($url[1]);
            }
        }

        //params
        if( !empty($url) ) {
            $this->params = array_values($url);
        }

        call_user_func_array($this->controller, $this->method, $this->params);



    }

    public function parseURL()
    {
        if( isset($_GET[\'url\']) ) {
            $url = rtrim($_GET[\'url\'], \'/\');
            $url = filter_var($url, FILTER_SANITIZE_URL);
            $url = explode(\'/\', $url);
            return $url;
        }
    }
}
1 个回复
最合适的回答,由SO网友:kero 整理而成

call_user_func_array($this->controller, $this->method, $this->params);
这个电话是错的,check this example 在PHP官方文档中。您的代码应该如下所示:(对类方法使用数组语法)。

call_user_func_array([$this->controller, $this->method], $this->params);
//                   ^                                ^