这几个的区别呢
经常会听到有人讨论

连一些PHPER面试都会出这个题目

我浅显的说一下我的意见

先看手册怎么说的:

include&require

include()语句包含并运行指定文件。

以下文档也适用于require()。这两种结构除了在如何处理失败之外完全一样。include()产生一个警告require()则导致一个致命错误。换句话说,如果想在遇到丢失文件时停止处理页面就用require()include()就不是这样,脚本会继续运行。同时也要确认设置了合适的include_path。注意在 PHP 4.3.5 之前,包含文件中的语法错误不会导致程序停止,但从此版本之后会。

include_once

Theinclude_once()语句在脚本执行期间包含并运行指定文件。此行为和include()语句类似,唯一区别是如果该文件中的代码已经被包含了,则不会再次包含。如同此语句名字暗示的那样,只会包含一次。

include_once()应该用于在脚本执行期间同一个文件有可能被包含超过一次的情况下,想确保它只被包含一次以避免函数重定义,变量重新赋值等问题。

require_once

require_once()语句在脚本执行期间包含并运行指定文件。此行为和require()语句类似,唯一区别是如果该文件中的代码已经被包含了,则不会再次包含。有关此语句怎样工作参见require()的文档。

require_once()应该用于在脚本执行期间同一个文件有可能被包含超过一次的情况下,想确保它只被包含一次以避免函数重定义,变量重新赋值等问题。

个人使用经验:

1.路径问题。

特别是 嵌套包含的时候,一定的注意包含文件的路径。

比如 A文件包含了B文件,B文件包含了C文件,A,B,C文件都不在同一个文件夹下,这个时候往往很容易出错误。

解决方案:定义一个基路径sitebase

2.效率问题

include_once,require_once,与include,require比较,效率要低一点,因为他们至少得先判断一下这个文件是否存在。