PHP文件_存在并返回false
我正在尝试为我的项目编写我自己的小MVC框架,我可以随便看看,然后快速启动并运行,主要是为了学习。每个请求都通过PHP文件_存在并返回false,php,url-routing,file-exists,Php,Url Routing,File Exists,我正在尝试为我的项目编写我自己的小MVC框架,我可以随便看看,然后快速启动并运行,主要是为了学习。每个请求都通过index.php路由,其中包含以下代码: <?php // Run application require 'application/app.php'; $app = new App(); $app->run(); 因此,通过从app.php中使用如果(文件u存在('controllers/'.$controller.'.php')),它应该能够找到控制器/Pages
index.php
路由,其中包含以下代码:
<?php
// Run application
require 'application/app.php';
$app = new App();
$app->run();
因此,通过从app.php
中使用如果(文件u存在('controllers/'.$controller.'.php'))
,它应该能够找到控制器/Pages.php
,但它不能
有人知道我如何解决这个问题吗?您正在使用相对路径作为包含项。随着应用程序的增长,它将成为一场噩梦 我建议你
- 编写一个autoloader类,处理包含文件的问题。使用一些映射机制将名称空间/类名转换为路径
- 使用绝对路径。请参阅下面的调整代码
// Run application
define('ROOT', dirname(__FILE__) );
require ROOT . '/application/app.php';
$app = new App();
$app->run();
后来:
// Check if controller exists
if(file_exists(ROOT . '/application/controllers/' . $controller . '.php')) {
// Include and instantiate controller
require_once ROOT. '/application/controllers/' . $controller . '.php';
$controller = new $controller . 'Controller';
/application
/controllers
Pages.php
/models
/views
app.php
routes.php
// Run application
define('ROOT', dirname(__FILE__) );
require ROOT . '/application/app.php';
$app = new App();
$app->run();
// Check if controller exists
if(file_exists(ROOT . '/application/controllers/' . $controller . '.php')) {
// Include and instantiate controller
require_once ROOT. '/application/controllers/' . $controller . '.php';
$controller = new $controller . 'Controller';