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

时间:2016-09-06 13:35:51

标签: php

我的代码出了什么问题,当我更改网址时,我总是遇到致命的错误。我无法删除那些未定义的以下,我将不会获得第二个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

1 个答案:

答案 0 :(得分:0)

您的变量$url是一个数组,您可以使用该数组创建对象并使用或不使用参数调用方法。对于数组,你有var_dumped 0 =&gt; event,1 =&gt;''你正在创建一个类事件的对象并调用不存在的方法''。更正代码或传递有效的函数名称。

您也可以尝试检查空字符串。

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