我出于某种原因在下面的代码中得到了这个通知,我的应用程序运行正常并且它不会以任何方式影响其余的代码。但我无法绕过这一个通知。我的代码中没有看到任何错误。另外,我在其他地方使用_ROOT全局常量,并没有给我任何关于它未定义的通知。有趣的是,if (defined('_ROOT'))
评估为真,因为它应该是,因为很明显它确实是定义的。
代码:
<?php
session_start();
//define('_DEBUG', 'YES');
define('_ROOT', dirname(__FILE__), true);
require_once _ROOT.'/config/config.php'; //no notice
function __autoload($class_name) {
if (defined('_DEBUG')) { echo '__autoload called<br>'; }
if (defined('_ROOT')) { echo 'root exists'._ROOT.'<br>'; } //doesn't give me a notice
if (file_exists(_ROOT.'/app/core/'.$class_name.'.php')) { //gives me a notice
require_once _ROOT.'/app/core/'.$class_name.'.php'; //doesn't give me a notice
}
}
$app = new Application();
echo $app->run();
注意:Notice: Use of undefined constant _ROOT - assumed '_ROOT' in path\to\index.php on line 13
答案 0 :(得分:1)
很明显:调用_ROOT
时没有定义__autoload()
(请注意,这可能是在执行脚本时很早)。
if (defined('_ROOT')) { echo 'root exists'._ROOT.'<br>'; }
没有给您通知,因为if
中的代码在_ROOT
未定义时永远不会执行。