equire() 语句包含并运行指定文件,多次引用会出现redeclare错误。
require() 和 include()几乎完全一样,除了处理失败的方式不同之外。include() 产生一个Warning而 require()则导致一个Fatal Error。换句话说,如果想在丢失文件时停止处理页面,那就别犹豫了,用 require() 吧。include()就不是这样,脚本会继续运行。同时也要确认设置了合适的include_path。
2.include
include() 语句包含并运行指定文件。
以下文档也适用于 require()。这两种结构除了在如何处理失败之外完全一样。include()产生一个警告而 require() 则导致一个致命错误。
当一个文件被包含时,其中所包含的代码继承了 include 所在行的变量范围。从该处开始,调用文件在该行处可用的任何变量在被调用的文件中也都可用。不过所有在包含文件中定义的函数和类都具有全局作用域。
3.require_once
require_once() 语句在脚本执行期间包含并运行指定文件。此行为和 require()语句完全相同,唯一区别是如果该文件中的代码已经被包含了,则不会再次包含。
4.include_once
include_once() 语句在脚本执行期间包含并运行指定文件。此行为和 include()语句类似,唯一区别是如果该文件中的代码已经被包含了,则不会再次包含。如同此语句名字暗示的那样,只会包含一次。
include_once()应该用于在脚本执行期间同一个文件有可能被包含超过一次的情况下,想确保它只被包含一次以避免函数重定义,变量重新赋值等问题。
返回值和 include() 相同。如果文件已被包含,本函数返回 TRUE。
推荐使用 include和 require代替 include_once和 require_once:理由的是, include_once/require_once需要查询一遍已加载的文件列表, 确认是否存在, 然后再加载(可以避免redeclare错误,但是效率低)。
对include()来说,在include()执行时文件每次都要进行读取和评估;而对于require()来说,文件只处理一次(实际上,文件内容替换了require()语句)。这就意味着如果有包含这些指令之一的代码和可能执行多次的代码,则使用require()效率比较高。另一方面,如果每次执行代码时相读取不同的文件,或者有通过一组文件叠代的循环,就使用include(),因为可以给想要包括的文件名设置一个变量,当参数为include()时使用这个变量。