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