1、概要

require() 语句的性能与 include() 相类似 都是包括并运行指定文件。不同之处在于:对 include() 语句来说 在执行文件时每次都要进行读取和评估;而对于 require() 来说 文件只处理一次(实际上 文件内容替换 require() 语句)。这就意味着如果可能执行多次的代码 则使用 require() 效率比较高。另外一方面 如果每次执行代码时是读取不同的文件 或有通过一组文件迭代的循环 就使用 include() 语句。

require() 的使用方法如:

require("myfile.php")

这个语句通常放在 PHP 脚本程序的最前面。PHP 程序在执行前 就会先读入 require() 语句所引入的文件 使它变成 PHP 脚本文件的一部分。

include() 使用方法和 require 一样如:

include("myfile.php")

这个语句一般是放在流程控制的处理区段中。

PHP 脚本文件在读到 include() 语句时 才将它包含的文件读取进来。这种方式 可以把程式执行时的流程简单化。

  • incluce 在用到时加载
  • require 在一开始就加载
  • _once 后缀表示已加载的不加载

PHP 系统在加载PHP程序时有个伪编译过程 可使程序运行速度加快。但 incluce 的文档仍为解释执行。include 的文件中出错了 主程序继续往下执行 require 的文件出错了 主程序也停了 所以包含的文件出错对系统影响不大的话(如界面文件)就用 include 否则用 require。

require() 和 include() 语句是语言结构 不是真正的函数 可以像 php 中其 的语言结构一样 例如 echo() 可以使用 echo("ab") 形式 也可以使用 echo "abc" 形式输出字符串 abc。require() 和i nclude() 语句也可以不加圆括号而直接加参数。

include_once() 和 require_once() 语句也是在脚本执行期间包括运行指定文件。此行为和 include() 语句及 require() 类似 使用方法也一样。唯一区别是如果该文件中的代码已经被包括了 则不会再次包括。这两个语句应该用于在脚本执行期间 同个文件有可能被包括超过一次的情况下 确保它只被包括一次 以避免函数重定义以及变量重新赋值等问题。


2、详解

2.1 报错

include 引入文件的时候 如果碰到错误 会给出提示 并继续运行下边的代码。

require 引入文件的时候 如果碰到错误 会给出提示 并停止运行下边的代码。

用例子来说话 写两个 php 文件 名字为 test-include.php 和 test-require.php 注意相同的目录中 不要存在个名字是 test-nothing.php 的文件。

test-include.php

<?phpinclude 'test-nothing.php';echo 'abc';?>

test-require.php

<?phprequire 'test-nothing.php';echo 'abc';?>

浏览 http://localhost/test-include.php 因为没有找到 test-nothing.php 文件 看到了报错信息 同时 报错信息的下边显示了 abc 你看到的可能是类似下边的情况:

Warning: include(test-nothing.php) [function.include]: failed to open stream: No such file or directory in D:wwwtest-include.php on line 2Warning: include() [function.include]: Failed opening 'test-nothing.php' for inclusion (include_path='.;C:php5pear') in D:wwwtest-include.php on line 2abc

浏览 http://localhost/test-require.php 因为没有找到 test-nothing.php 文件 看到了报错信息 但是 报错信息的下边没 有显示abc 你看到的可能是类似下边的情况:

Warning: require(test-nothing.php) [function.require]: failed to open stream: No such file or directory in D:wwwtest-require.php on line 2Fatal error: require() [function.require]: Failed opening required 'test-nothing' (include_path='.;C:php5pear') in D:wwwtest-require.php on line 2 

2.2 文件引用方式

include() 执行时需要引用的文件每次都要进行读取和评估 require() 执行时需要引用的文件只处理一次(实际上执行时需要引用的文件内容替换了 require() 语句)可以看出若有包含这些指令之一的代码和可能执行多次的代码 则使用 require() 效率比较高 若每次执行代码时相读取不同的文件或有通过一组文件叠代的循环 就使用 include() 可以给想要包括的文件名设置变量 当参数为 include() 时使用这个变量。

原文链接:https://blog.csdn.net/shenpengchao/article/details/52326233