PHP:致命错误:调用未定义方法::(url)()


PHP: Fatal error: Call to undefined method ::(url)()

我的代码有什么问题,我总是得到致命的错误,当我改变我的URL。我不能删除那些,如果下面有未定义,我不会得到第二个URL。我是初学者创建MVC请帮助

class event_trap
{
    function __construct()
    {
        $url = $_GET['url'];
        $url = rtrim($url. '/');
        $url = explode('/', $url);
        //print_r($url);
        $file = 'event_mvc/controllers/' .$url[0] . '.php';
        if (file_exists($file)) {
            require $file;
        } else {
            require 'event_mvc/controllers/error.php';
            $controller = new Error();
            return false;
        }
        $controller = new $url[0]; 
        if (isset($url[2])) {
            $controller->{$url[1]}($url[2]); //<-- Undefined method
        } else {
            if(isset($url[1])) {
                $controller -> {$url[1]}(); //<-- Undefined method
            } else {
            }     
        }
    }
}

var_dump ($ url)

array (size=2)
  0 => string 'event' (length=5)
  1 => string '' (length=0)
Fatal error: Call to undefined method event::() in 
   C:'wamp'www'tabulation'event_mvc'libs'Bootstrap.php on line 33
  Call Stack
   #    Time    Memory  Function    Location
   1    0.0004  142728  {main}( )   ..'event.php:0 
   2    0.0012  149096  event_trap->__construct( )  ..'event.php:4

变量$url是一个数组,用于创建对象和调用带或不带参数的方法。对于数组,您有var_dumps 0=>event, 1=>"您正在创建一个类event的对象并调用该方法",该方法不存在。更正代码或传递有效的函数名。

你可以试试这个,它也检查空字符串。

if (isset($url[2]) && !empty($url[2]) {
    $controller->{$url[1]}($url[2]);
} else {
    if(isset($url[1]) && !empty($url[1]) {
        $controller -> {$url[1]}();
    }
}