require(),include(),require_once()和include_once()之间的区别

Posted 小面团

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了require(),include(),require_once()和include_once()之间的区别相关的知识,希望对你有一定的参考价值。

引用文件的方法有两种:requireinclude

require 的使用方法如 require("file.php"); 。这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份。常用的函数,亦可以这个方法将它引入网页中。

include 使用方法如 include("file.php"); 。这个函数一般是放在流程控制的处理部分中。PHP 程序网页在读到 include 的文件时,才将它读进来。这种方式,可以把程序执行时的流程简单化。

_once 后缀表示已加载的不加载

1.报错 include引入文件的时候,如果碰到错误,会给出提示,并继续运行下边的代码 require引入文件的时候,如果碰到错误,会给出提示,并停止运行下边的代码

注:在 PHP 4.3.5 之前,包含文件中的语法错误不会导致程序停止,但从此版本之后会。

2.条件引用

include()与require()的功能相同,用法上却有一些不同,include()是有条件包含函数,而require()则是无条件包含函数, 例如下面例子,如果变量$somg为真,则将包含文件somefile.php:

1
2
3
if($some){<br>
  include \'somefile.php\';
}

但无论$some取何值,下面的代码将把文件somefile.php包含进文件里:

1
2
3
if($something){
  require \'somefile.php\';
}

下面的例子充分说明了这两个函数之间的不同

1
2
3
4
5
$i = 1;
while ($i < 3) {
  require "somefile.$i.php";
  $i++;
}

可以从以上这段代码中看出,每一次循环的时候,程序都将把同一个文件包含进去,很显然这不我们想要的,可以看出这段代码希望在每次循环时, 将不同的文件包含进来,如果要完成这个功能,只能使用函数include()

1
2
3
4
$i = 1;<br>while ($i < 3) {
  include "somefile.$i.php";
  $i++;
}

3.require用相对路径的时候

当A引用B,而B又引用了其他文件C时,C的路径如果是相对路径,则是相对于A的路径,而不是相对于B的\'

4.require_once() 语句在脚本执行期间包括并运行指定文件。此行为和 require() 语句类似,唯一区别是如果该文件中的代码已经被包括了,则不会再次包括。

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

 

5..文件引用方式

include有返回值,而require没有

1
2
3
4
5
6
$login = include(’test.php’);
if(!empty($login)){
  echo “文件包含成功”;
}else{
  echo “文件包含失败”;
}

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

以上是关于require(),include(),require_once()和include_once()之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

PHP需要来自***目录的文件

gulp监听文件变化,并拷贝到指定目录(转)---参考记录

RequireJS - 在 require 流和内联中加载 AMD 模块

为什么在NodeJS中使用“ require”时会有如此奇怪的行为?

vue jquery混用

续集测试 - 有时验证错误