PHP中include与require的区别:理解文件包含错误处理机制

例如下面的代码:

PHP中include与require的区别:理解文件包含错误处理机制

复制代码 代码如下:

include('hello.php');

echo 'include test final!'; // 这里显示了 "include test final!" ,但在执行过程中,include 出现了报错,但程序会继续执行下去。

require('hello.php');

这行代码会导致 require 报错,从而停止代码的执行。

一句话总结:

1.include() 产生一个警告

2.require() 则导致一个致命错误

如果你想在丢失文件时停止处理页面,那么就应毫不犹豫地使用 require()。而 include() 则并非如此,使用它时脚本会继续运行。并且要确保设置了合适的 include_path。

在解析程序时会读取 require 的文件,而不是在解析之后。如果无法读取到被 require 的文件,就无法进行下一步动作。因此,不被正确包含的话会对程序的文件产生影响,使用 require 会比较好,可能在效率上也会略微高一些。

注意:require() 具有无论如何都会包含文件的特性,而 include() 则具备可以有选择地进行包含的特点。

复制代码 代码如下:

在上面的代码里,x.php 肯定会被包含进来,然而 s.php 必定不会被包含。

二种方式提供不同的使用弹性:

使用 require 的方法为 require("MyRequireFile.php")。此函数通常置于 PHP 程序的最前端,在 PHP 程序执行之前,就会先读取 require 所指定引入的文件,使其成为 PHP 程序网页的一部分。

使用方法为 include("MyIncludeFile.php") 。该函式通常置于流程控制的处理区段内。PHP 程式网页在读取到 include 的档案时,才会将其读入。通过这种方式,能够使程式执行时的流程变得简单。

一、使用语法和简介

1、include()

语法:include(/path/to/filename)

include()语句会在被调用的位置处包含一个文件。包含一个文件的效果就如同在该语句所在位置复制指定文件的数据一样。

使用include()时可以忽略括号。

可以依据条件去执行 include()语句。在条件语句里使用 include()存在一个奇特的现象,那就是它必须被包含在语句块的大括号内,亦或是用其他的语句包围符将其括起来。

2、include_once()

语法:include_once(filename)

include_once()语句在脚本执行过程中会包含并运行指定的文件。这种行为与 include()语句相似。其唯一的差别在于,include_once()会首先判断该文件之前是否已被包含过,如果已经包含过了,就会忽略本次的包含操作。

include_once() 应在嵌套包含的情形下使用,目的是确保它仅被包含一次,从而避免函数重定义以及变量重新赋值等问题。

小结:include_once()函数的作用和 include 一样。它首先会去验证是否已经包含了该文件。若已经包含,就不会再执行 include_once 。若没有包含,则必须包含该文件。除此之外,它与 include 完全相同。

3、require()

语法:require(filename)

require()在很大程度上和 include 是一样的,它们都能把一个模板文件包含到 require 调用所在的那个位置。

require 和 include 存在两点重要的差异。其一,不论 require 处于何种位置,被制定的文件都会被包含到包含 require 的脚本之中。比如,即便 require 处在计算结果为假的 if 语句里,指定文件依然会被包含进来。

重要区别之二在于:当 require 出错时,脚本会停止运行;而在使用 include 的情形下,脚本会继续执行。

4、require_once()

语法:require_once(filename)

require_once()语句在脚本执行过程中会包含并运行指定的文件。这种行为与 require()语句相似。其唯一的差别在于,require_once()会首先判断该文件之前是否已被包含过,如果已经包含过了,就会忽略本次的包含操作。

require_once() 应在嵌套包含时使用,要确保它仅被包含一次,这样能避免函数重定义以及变量重新赋值等问题。

小结:网站越来越大时,可能会有某些文件被重复包含。这或许不是个问题,但在修改了所包含文件的变量后,因后面再次包含原来的文件而被覆盖,这种情况可能不被希望出现。另外,还可能出现所包含文件中函数名冲突的问题。使用 require_once 能够解决这些问题。

require_once 函数有这样的作用,它能保证文件只会被包含一次。当遇到 require_once 之后,倘若之后再试图去包含相同的文件,那么这个文件就会被忽略掉。

二、区别总结

1、include()与require()语句区别。

两者区别:这两种结构除了在如何处理失败之外完全一样。

include() 产生一个警告,脚本会继续运行。

require() 则导致一个致命错误,脚本会停止运行。

如果在遇到丢失文件或遇到错误时想要停止处理页面,那么就使用 require()。如果在遇到错误时想要继续处理页面,那么就使用 include()。

在 PHP 4.3.5 之前,包含文件中的语法错误不会致使程序停止。而从 PHP 4.3.5 这个版本开始,包含文件中的语法错误就会导致程序停止。

include() 和 require() 的区别在于它们在包含文件时的行为。include() 会在遇到错误时继续执行脚本,而 require() 则会在遇到错误时停止执行脚本,并输出一个错误信息。

include_once()与 require_once()相同,在脚本执行期间,当同一个文件有可能被包含超过一次时,应使用它们,目的是确保该文件只被包含一次,从而避免函数重定义以及变量重新赋值等问题。这就是 include_once() 与 include() 的主要区别,同时也是 require_once() 与 require() 的主要区别。

三、需要注意的问题

1.路径问题

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

A 文件包含着 B 文件,B 文件又包含着 C 文件,并且 A、B、C 文件都不在同一个文件夹当中,在这种情况下通常是很容易出现错误的。

解决方案:能够运用 dirname(__FILE__) 这一语句,其含义为获取当前脚本的绝对路径。例如:require_once(dirname(__FILE__).'/config.php');

2.效率问题

include_once()和 require_once()与 include()、require()相比,效率要低一些。因为它们至少需要先判断一下这个文件是否已被包含。在 PHP5 版本中,这一问题有了很大的改进,不过效率仍然存在差别。

你可能想看:
« 上一篇
下一篇 »

相关推荐

php实时推送,php实地培训

2026年10月05日

53阅读

php乱码出现问号的原因,php乱码出现问号的原因有哪些

2026年10月05日

44阅读

php一句话木马,一句话木马ctf

2026年10月05日

48阅读

php获取数组长度,php中如何获取数组的长度

2026年10月05日

50阅读

php面试题库及答案,php程序员面试真题库

2026年10月05日

47阅读

phpcontent-type修改,php源码二次修改需要多少钱

2026年10月05日

42阅读