require 和 include 几乎完全一样,除了处理失败的方式不同之外。require 在出错时产生 E_COMPILE_ERROR 级别的错误。换句话说将导致脚本中止而 include 只产生警告(E_WARNING),脚本会继续运行。
// 当test.php文件不存在时
// require 'test.php';
// echo 'Hello World';
Warning: require(test.php): failed to open stream: No such file or directory in D:\phpStudy\WWW\index\index.php on line 2
Fatal error: require(): Failed opening required 'test.php' (include_path='.;C:\php\pear') in D:\phpStudy\WWW\index\index.php on line 2
// include 'test.php';
// echo 'Hello World';
Warning: include(test.php): failed to open stream: No such file or directory in D:\phpStudy\WWW\index\index.php on line 9
Warning: include(): Failed opening 'test.php' for inclusion (include_path='.;C:\php\pear') in D:\phpStudy\WWW\index\index.php on line 9
Hello World
include_once 语句在脚本执行期间包含并运行指定文件。此行为和 include 语句类似,唯一区别是如果该文件中已经被包含过,则不会再次包含,且 include_once 会返回 true。 顾名思义,require_once,文件仅仅包含(require)一次。
include_once 可以用于在脚本执行期间同一个文件有可能被包含超过一次的情况下,想确保它只被包含一次以避免函数重定义,变量重新赋值等问题。