预定义的PHP常量不起作用

时间:2015-11-06 17:22:11

标签: php oop initialization constants

我按照教程创建了包含所需文件的实例化文件。这是项目树:

enter image description here

这是我的instantiate.php

defined('DS') ? null : define('DS', DIRECTORY_SEPARATOR);

defined('SITE_ROOT') ? null : define('SITE_ROOT', DS.'var'.DS.'www'.DS.'html'.DS.'photo_gallery');

defined('LIB_PATH') ? null : define('LIB_PATH', SITE_ROOT.DS.'includes');

//load config file first
require_once(LIB_PATH.DS."config.php");

//load basic functions next so that everything after can use them
require_once(LIB_PATH.DS."functions.php");

//load core objects
require_once(LIB_PATH.DS."session.php");
require_once(LIB_PATH.DS."database.php");

//load database-related classes
require_once(LIB_PATH.DS."user.php");

login.php中,我要求初始化文件为:

require_once("../../includes/initialize.php");

但是,按照本教程,我可以在需要LIB_PATH的{​​{1}}和需要database.php的{​​{1}}等文件中使用config.php

目前,他们需要没有路径的文件,因为它们位于同一个包含文件中。但是,如果我对目录分隔符,站点根目录和lib_path的工作方式有所了解,那就是要改进它,不需要在任何地方添加不同的路径,只需添加路径即可。常量。嗯,它不起作用!它显示如下:(在顶部,您可以看到公用文件夹中user.phpdatabase.php的回显。

enter image description here

我已经检查了dirname(__FILE__)以查看根路径......一切似乎都没问题,但如果我尝试使用此index.php则无效。

最后我已经读过它的一些ibay限制,但我已经尝试做更多的研究,我甚至无法找到这个" ibay&#34 ;是。

有谁知道为什么会这样?谢谢!

1 个答案:

答案 0 :(得分:1)

您收到通知是因为您在包含文件的路径上出现错误:您没有在脚本上加载initialize.php文件。如果您真的想要加载该文件(并且您真的想要它,因为您的代码不能没有它),您应该使用require而不是include。这样,如果文件不存在,您将收到一条错误消息,您的代码将停止(请将该停止视为您真正想要的内容,就像您没有路径一样,您的程序将会失败)。

更重要的是,您应该使用require_once,因此不要重载您正在构建的应用程序:如果文件已加载一次,则不会再次加载。

您可以按照此问题的建议检查文件是否已加载:Check if a file was included or loaded