include、require、include_once、require_once的区别-程序员宅基地

技术标签: include_once  include  Powered by 金山文档  Php  php  require  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’)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zhoupenghui168/article/details/129789895

智能推荐

利用Docker建立服务器和docker容器的监视系统-程序员宅基地

文章浏览阅读112次。为什么80%的码农都做不了架构师?>>> ...

Linux进程间通信——有名管道 FIFO 详解_有名管道的fifo怎么理解-程序员宅基地

文章浏览阅读788次,点赞3次,收藏2次。详细介绍了FIFO相关的关键概念、FIFO的创建、FIFO的打开规则、FIFO的读写规则,并对打开规则及读写规则进行了实例程序验证。_有名管道的fifo怎么理解

MyBatis中resultType和resultMap的区别-程序员宅基地

文章浏览阅读664次,点赞2次,收藏15次。[size=medium][align=left]MyBatis中关于resultType和resultMap的区别共同:MyBatis中在查询进行select映射的时候,返回类型为resultType、resultMap区别:1.resultType是直接表示返回类型的(对应着我们的model对象中的实体)2.resultMap则是对外部ResultMap的引用(提前定义..._mabaits resulttype实体类中5个字段

lol战绩查询接口_如何在LOL中正确的抓出内鬼-程序员宅基地

文章浏览阅读6.1k次。原本假期计划是打两个星期游戏再随便折腾点好玩的.但可惜,假期余额不断充值到账,游戏也给我打腻了.于是顺着游戏里小伙伴的撕逼开始了抓内鬼之旅,让?来看看到底是谁让我上不了王者:D.爬数据最初打算是使用wegame的查询召唤师接口,但是没找到web端且只记录半年的数据,不方便抓包(懒得用wireshark分析).然后去翻翻有没有现成的轮子,看到掌盟上已经有人做过类似的工作,还真有.https..._lol战绩接口

platform基础介绍_platform详解-程序员宅基地

文章浏览阅读4.2k次,点赞5次,收藏23次。(1)什么是platformpaltform是一种虚拟的总线,用于管理外设资源内存资源中断资源。在硬件上有USB-BUS总线,PCI-BUS总线,这是在物理设备上实际存在的总线。USB-BUS管理USB设备,PCI总线管理PCI设备。但是在实际中,一些设备不属于这些总线,一些SOC上面的控制器或者设备。使用platform统一管理这些设备。platform的一个优点就是将驱..._platform详解

【计算机算法】回溯——子集和问题、旅行商问题_旅行商问题测试数据-程序员宅基地

文章浏览阅读319次。求集合中满足一个值的子集和测试数据:43113 24 11 7结果:{13,11,7}{24,7}#include<iostream>using namespace std;int *x,*y;int size,sum;void output(){ int count = 0;//计算子集中的个数,这个只是用来控制是否输出逗号的情况 int tempsum = 0; for(int i = 1;i <= size;i++){ if(y[i] !_旅行商问题测试数据

随便推点

数据链路层简介-程序员宅基地

文章浏览阅读7.2k次,点赞12次,收藏32次。数据链路的基本概念、主要功能_数据链路层

程序员人生:技术人员的职业发展规划_程序员个人发展目标-程序员宅基地

文章浏览阅读1.1k次。以下内容转载自https://blog.csdn.net/universsky2015/article/details/108846699技术人员的职业发展规划思考之前有一篇美团公众号的文章《工作中如何做好技术积累》。近期也在给团队同学做年度绩效沟通,在沟通的时候大家也探讨了职业发展规划。有些同学表示,希望后续能进一步在技术领域(或管理方向)进一步积累;有的同学也表示,希望在新的一年,能具有更好的技术影响力,自己能做一些技术决定,去影响其他人,这样自己会很有成就感。不过,我也挑战问了一些问题:._程序员个人发展目标

pymysql体温管理项目_spark 每天测量一次体温,数据库判断-程序员宅基地

文章浏览阅读501次。体温管理项目目标1.根据页面设计系统功能。2.设计项目数据库。3.代码实现。项目介绍登记学生每天提问信息,发现并记录异常情况!1.首页: 生成每个学生的当天体温名单,按照日期查询当天体温情况2.体温状态修改页面:实现修改某人的体温状态(1:正常,2.体温异常,3.未登记)3.异常信息登记页面:根据名字修改各种信息4.某天体温记录统计:要求:完成统计功能统计:体温正常的有多少人,异常的有多少人!扩展:统计本周/7天内/某个时间段内:某人异常体温次数。项目功_spark 每天测量一次体温,数据库判断

SpringCloud-SpringBoot读取Nacos上的配置文件_springboot读取nacos配置-程序员宅基地

文章浏览阅读2.2k次,点赞22次,收藏8次。在 Spring Boot 应用程序中,可以使用 Spring Cloud Nacos 来实现从 Nacos 服务注册中心和配置中心读取配置信息。​ 注解时,需要确保属性名与配置文件中的键名一致,Spring Boot 会自动根据前缀匹配来绑定配置项。​ 注解中的 value 值指定了要绑定的配置文件的前缀,可以直接读取到该配置文件中的相关属性值。如果想要在配置发生变化时动态刷新配置,可以在需要动态更新的 Bean 类上添加。​ 来触发配置的刷新,以便及时获取最新的配置信息。​,并添加相应的键值对。_springboot读取nacos配置

三年级教师计算机教学计划,三年级信息技术教学计划-程序员宅基地

文章浏览阅读110次。2018---2019学年度第一学期三年级信息技术教学计划一、学生分析经过三年级上学期的信息知识的学习,学生们积累了初步的经验。这个阶段的学生都是接触电脑课不久,电的操作还不是很熟练。但是学生对电脑课的兴趣比较浓,热情比较高。所以,老师要抓住这点优势,发扬上个学期总结的一些比较好的经验,把精力放在提高自己的教学方法和教学技巧上让学生学得开心,寓教于乐。二、教材分析本册从内容上来分可分为三单元。第1..._三年级计算机教学计划

kubernetes_kubet-程序员宅基地

文章浏览阅读620次。Kubernetes是自动化容器操作的开源平台,这些操作包括部署、调度和节点集群间扩展Borg是谷歌内部使用的大规模集群管理系统,基于容器技术,目的是实现资源管理的自动化,以及跨多个数据中心的资源利用率的最大化。Kubernetes是Google Omega的开源版本背景kubelet 是 Kubernetes 项目用来操作 Docker 等容器运行时的核心组件,除了跟容器运行时打交道外,kubelet 在配置容器网络、管理容器数据卷时,都需要直接操作宿主机。_kubet

推荐文章

热门文章

相关标签