我正在尝试为我的项目编写自己的小型 MVC 框架,我可以直接加入并快速启动并运行,主要用于学习目的。每个请求都通过index.php
具有以下代码的路由:
<?php
// Run application
require 'application/app.php';
$app = new App();
$app->run();
这是我的应用程序类:
<?php
class App {
public function run() {
// Determine request path
$path = $_SERVER['REQUEST_URI'];
// Load routes
require_once 'routes.php';
// Match this request to a route
if(isset(Routes::$routes[$path])) {
} else {
// Use default route
$controller = Routes::$routes['/'][0];
$action = Routes::$routes['/'][1];
}
// Check if controller exists
if(file_exists('controllers/' . $controller . '.php')) {
// Include and instantiate controller
require_once 'controllers/' . $controller . '.php';
$controller = new $controller . 'Controller';
// Run method for this route
if(method_exists($controller, $action)) {
return $controller->$action();
} else {
die('Method ' . $action . ' missing in controller ' . $controller);
}
} else {
die('Controller ' . $controller . 'Controller missing');
}
}
}
这是我的路线文件:
<?php
class Routes {
public static $routes = array(
'/' => array('Pages', 'home')
);
}
当我尝试加载根目录(/
)时,我得到了这个:
控制器页面控制器丢失
由于某种原因,该file_exists
功能看不到我的控制器。这是我的目录结构:
/application
/controllers
Pages.php
/models
/views
app.php
routes.php
所以通过使用if(file_exists('controllers/' . $controller . '.php'))
from app.php
,它应该能够找到controllers/Pages.php
,但它不能。
有谁知道我该如何解决这个问题?