php require vs. include
1. require在代码执行前被预处理,被引用的文件内容会替代掉require语句。
include在代码执行到那一句才被处理,相当于执行流跳到被执行的文件,执行完再跳回来。
2. require的文件不存在会报fatalerror,并终止。include的文件不存在时只会warnning并继续执行。
3. require的文件中只能放置:变量初始化,函数的定义以及类和接口的定义,不能放置控制结构尤其是return。include则不做限制。
所以建议把上述那些定义之类的静态的东西在文档头部require,需要执行的代码片段在相应的位置include。为了保证定义不重复,可以在被引用的文件里用define和defined判断,可以用require_once。
4. require没有返回值的功能,上一条也说了被引用的文件中不能有return。include的文件中如果return了一个值,那么include的指令会返回它,没有则是null。
5. require和include被引用的文件中都可以访问之前的全局域变量。
6. 和jsp比较的话,require相当于<%@ include="..." %>标签。include相当于<jsp:include page="..." />标签。
include在代码执行到那一句才被处理,相当于执行流跳到被执行的文件,执行完再跳回来。
2. require的文件不存在会报fatalerror,并终止。include的文件不存在时只会warnning并继续执行。
3. require的文件中只能放置:变量初始化,函数的定义以及类和接口的定义,不能放置控制结构尤其是return。include则不做限制。
所以建议把上述那些定义之类的静态的东西在文档头部require,需要执行的代码片段在相应的位置include。为了保证定义不重复,可以在被引用的文件里用define和defined判断,可以用require_once。
4. require没有返回值的功能,上一条也说了被引用的文件中不能有return。include的文件中如果return了一个值,那么include的指令会返回它,没有则是null。
5. require和include被引用的文件中都可以访问之前的全局域变量。
6. 和jsp比较的话,require相当于<%@ include="..." %>标签。include相当于<jsp:include page="..." />标签。