require_once导致的一次Bug

代码如下:

public function test($table) {
    require_once ROOT_PATH . '/config/db.config.php';
    $result = false;

    if (!$DB_CONFIG[$table]) {
        return $result;
    }

    // 代码省略
}

上线后发现test方法没执行,加断点调试后发现走到这里的if判断里直接return掉了。
断点调试,发现$DB_CONFIG为NULL,这是什么灵异的问题。

检查代码后,发现是由于require_once导致的。
这里如果在函数外其他地方加载了db.config.php文件,这里就不再加载这个文件,导致$DB_CONFIG这个变量为空。
改为require后恢复正常。

总结

对于配置文件,不要使用require_once进行加载。
另外也不推荐使用require_once进行文件加载,具体见《再一次, 不要使用(include/require)_once》

标签: PHP

添加新评论