私は自分のプロジェクト用に独自の小さな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')
);
}
ルートディレクトリ()をロードしようとすると、次の/
ようになります。
コントローラPagesControllerがありません
何らかの理由で、file_exists
関数は私のコントローラーを認識できません。これは私のディレクトリ構造です:
/application
/controllers
Pages.php
/models
/views
app.php
routes.php
したがって、if(file_exists('controllers/' . $controller . '.php'))
fromを使用するapp.php
と、を見つけることができるはずですが、見つけるcontrollers/Pages.php
ことはできません。
誰かが私がこれを修正する方法を知っていますか?