我的应用程序通过索引文件路由每个请求。
这个文件 require_once $_SERVER['DOCUMENT_ROOT'] . "/app/config/config.php"
。
这个配置文件定义了路径常量,因此它们可以在其他地方使用,但它似乎不起作用。例如在config.php中我有
define('MODELS', $_SERVER['DOCUMENT_ROOT'] . "/app/models/");
。
在其中一个模型文件中,我试图包含另一个类,例如
require_once MODELS . "classA.php"
class classB {.....}
我为未定义的常量MODELS收到错误。任何想法如何解决这一问题?理想情况下,我希望可以从我的应用程序中的任何位置访问这些常量。
的config.php:
$root = $_SERVER['DOCUMENT_ROOT'] . "/";
define("APP",$root . "app/"); // app folder
define("CONFIG",$root . "app/config/"); // config folder
define("MODELS",$root . "app/models/"); // models folder
define("CONTROLLERS",$root . "app/controllers/"); // controllers folder
define("DB",$root . "app/db/"); // database connection folder
define("VIEWS",$root . "app/views/"); // views folder
define("FUNCTIONS",$root . "app/functions/"); // functions folder
define("LIBRARY",$root . "app/library/"); // library folder
define("PUBLIC",$root . "public/"); // public folder
的index.php:
require_once $_SERVER['DOCUMENT_ROOT'] . "/app/db/dbconnect.php";
require_once $_SERVER['DOCUMENT_ROOT'] . "/app/config/config.php";
require_once FUNCTIONS . "clean.php";
require_once MODELS . "core.php";
require_once MODELS . "user.php";
require_once MODELS . "browser.php";
require_once MODELS . "call.php";
require_once MODELS . "module.php";
错误来自某个文件:
if(isset($_POST['submit']) && $_POST['submit'] == "Send")
{
require_once MODELS . "contact.php";
$contact = new contact();
}
答案 0 :(得分:1)
将index.php文件与PHP魔法常量__DIR__
一起用作全局参考点。
的index.php
require_once __DIR__."/config.php"; // This loads your constants
的config.php
define('PATH', __DIR__."/any_folder_you_want"); // Repeat this for your folders
一般来说,您不希望以这种方式组织您的项目,因为它可能会在未来导致重大的遗传问题。
解决方案: