在索引文件中定义常量

时间:2016-11-06 18:50:06

标签: php scope constants

我的应用程序通过索引文件路由每个请求。

这个文件

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();
}

1 个答案:

答案 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

做得对:

一般来说,您不希望以这种方式组织您的项目,因为它可能会在未来导致重大的遗传问题。

解决方案: