请勿滥用require_once,尤其是在类中

PHP
3068
2
2015-12-22

0x001 前景提要

require 包含一个文件,文件不存在时报错并终止脚本运行

require_once 同上。区别在于该文件如果已被包含过则不再包含,可防止变量、函数冲突等问题

0x002 问题重现

在一个小项目中两次require_onceCodeigniter-Database ,并两次调用这个类中的初始化方法。发现第二次调用总会报错“数据库配置无效”

0x003 问题分析

在初始化方法的代码中,我发现数据库配置文件是用require_once加载数据库配置文件的

require_once只会包含一次文件,因此第二次执行该命令时并没有包含配置文件,自然就报错了

0x004 问题解决

require_once改为require
昵称
邮箱
网址
quericy的头像 2016-03-18 00:12

如果是引入类的话,为啥不用spl_autoload_register

mokeyjay的头像 2016-03-18 19:37
mokeyjay 博主

实际情况有些复杂,不适合这个