include、require、include_once、require_once的区别

  1. include() 与require()

1.1相同点

首先,include() 与require() 的功能是相同,它们的结构在包含文件上完全一样,都是包含并运行指定文件

1.2 不同点

1.2.1区别一 对错误的处理不同

require()语句在遇到包含文件不存在,或是出错的时候,就停止即行,并 报错;
include()则继续执行,只会 显示一个警告错误

说明案例如下:

include('hello.php');
echo 'include test final!'; //include报错,但是会继续执行,显示:include test final!

require('hello.php');
echo 'require test final!'; //require报错,停止代码的执行

1.2.2区别二 执行执行上的不同

require()会在PHP 程序执行前,就先读入require所指定的文件;而include()会放在 流程控制的处理部分中,也就是 当PHP执行到include文件时,才将指定的文件读入;
用通俗易懂的话说就是: include在用到的时候才加载,而require在一开始就加载了.所以在运行机制上, require()的效率相较于include()会稍微高一些。但是也正因为这种特性,include可以应用到条件语句内执行,而require()因为在程序被执行前就先引入文件,所以即使设定了判断语句来执行require(),无论true还是false,都会被执行

案例如下:

/*
 *无论变量flag 真假如何,file1.php都会被执行
 *而file2.php则会根据flag的值判断是否执行
*/
if($flag){
    require 'file1.php';
    include 'file2.php';
}
  1. include_once()和require_once()

2.1简介

include_once()函数的作用与include相同,不过它会首先验证是否已经包含了该文件,如果已经包含,则不再执行include_once,否则,则必须包含该文件,除了这一点与include完全相同
reclude_once()函数的作用与reclude相同,语句在脚本执行期间包含并运行指定文件,此行为和 require() 语句类似,唯一区别是require_once()会先判断一下这个文件在之前是否已经被包含过,如已经包含,则忽略本次包含

2.1相同点

include_once()函数的作用和 include() 是几乎相同的,这两个函数会先检查目标文件的内容是不是在之前就已经加载过了,如果加载了,那么就不会重复加载同样的内容,也就是相同的文件只会被加载一次,后面再试图包含相同的文件时将被忽略,目地就是防止函数重定义、变量重新赋值的问题.
因为随着网站越来越大,可能会出现重复包含某些文件,这也许不是问题,但又是修改了所包含文件的变量后,却由于后面再次包含原来的文件而被覆盖,可能不希望出现这种情况。还可能出现另一个问题,即所包含文件中函数名的冲突,所以使用require_once就可以解决这些问题

2.2不同点

唯一的差别在于 include_once() 函数会先检查要加载的文件是不是已经在该程序中的其它地方被加载过了,如果有的话就不会再次重复加载

3.关于效率问题

请自觉少用include_once()、 require_once()

原因

该函数原理:
引入文件->对当前脚本语句进行比较是否包含过->决定是否引入,效率可想而知,要是整个项目上百个类库,一次执行中比较数十次,那么效率自然比较低

4.注意

4.1 include()语法

使用include()时可以忽略括号,可以根据条件来执行include()语句,在条件语句中使用include()有个怪现象,它必须包围在语句块大括号中,或者用其他语句包围符括起来

4.2 路径问题

当程序嵌套包含的时候,一定要注意包含文件的路径:比如 A文件包含了B文件,B文件包含了C文件,A,B,C文件都不在同一个文件夹下,这个时候往往很容易出错误,这时可以使用 dirname(FILE) 语句,这句的意思是获得当前脚本的绝对路径,如:require_once(dirname(FILE).’/config.php’)

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
includeinclude_once是PHP中用来包含文件的两个关键字。它们的主要区别在于对于同一个文件的多次包含的处理方式。 include关键字会在每次执行到include语句时都包含指定的文件,即使该文件已经被包含过了。这可能会导致重复定义的问题或其他不必要的错误。 而include_once关键字则会在执行到include_once语句时,先检查该文件是否已经被包含过。如果已经被包含过,则不会再次包含。 因此,使用include_once可以避免重复包含文件,减少重复定义或其他错误的发生。而使用include则会在每次执行到include语句时都重新包含文件,无论该文件是否已经被包含过。 总结起来,include关键字每次执行都会包含指定的文件,而include_once关键字只会在文件未被包含过时才会包含。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [PHP函数include include_once requirerequire_once区别](https://blog.csdn.net/weixin_30263277/article/details/95152309)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [深入理解requirerequire_onceinclude以及include_once区别](https://download.csdn.net/download/weixin_38724229/13059079)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [PHP includeinclude_once区别](https://blog.csdn.net/u012222248/article/details/86609544)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值