广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP中的include和require有什么不同
  • 744
分享到

PHP中的include和require有什么不同

2023-06-20 18:06:01 744人浏览 薄情痞子
摘要

这篇文章主要讲解了“PHP中的include和require有什么不同”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php中的include和require有什么不同”吧!在PHP中,有两种

这篇文章主要讲解了“PHP中的include和require有什么不同”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php中的include和require有什么不同”吧!

在PHP中,有两种包含外部文件的方式,分别是include和require。他们之间有什么不同呢?

如果文件不存在或发生了错误,require产生E_COMPILE_ERROR级别的错误,程序停止运行。而include只产生警告,脚本会继续执行。

这就是它们最主要的区别,其他方面require基本等同于include。

  • 被包含文件先按参数给出的路径寻找,如果没有给出目录(只有文件名)时则按照 include_path 指定的目录寻找。如果在 include_path 下没找到该文件则 include 最后才在调用脚本文件所在的目录和当前工作目录下寻找

  • 如果定义了路径不管是绝对路径还是当前目录的相对路径 include_path 都会被完全忽略

  • include_path 在php.ini中定义

  • 当一个文件被包含时,其中所包含的代码继承了 include 所在行的变量范围。从该处开始,调用文件在该行处可用的任何变量在被调用的文件中也都可用。不过所有在包含文件中定义的函数和类都具有全局作用域

除了普通的require和include之外,还有require_once和include_once,他们的作用是:

  • 如果该文件中已经被包含过,则不会再次包含。如同此语句名字暗示的那样,只会包含一次

  • 可以用于在脚本执行期间同一个文件有可能被包含超过一次的情况下,想确保它只被包含一次以避免函数重定义,变量重新赋值等问题

我们来看些例子:

// a.php 不存在include "a.php"; // warning// require "a.php"; // errorecho 111; // 使用include时111会输出// file1.php 中只有一行代码echo 'file1';require_once 'includeandrequire/file1.php'; // file1require_once 'includeandrequire/file1.php'; // notinginclude_once 'includeandrequire/file1.php'; // notinginclude_once 'includeandrequire/file1.php'; // notingrequire 'includeandrequire/file1.php'; // file1require 'includeandrequire/file1.php'; // file1require 'includeandrequire/file1.php'; // file1require 'includeandrequire/file1.php'; // file1

我们可以看出当第一个_once加载成功后,后面不管是require_once还是include_once,都不会再加载这个文件了。而不带_once的则会重复加载文件。

file2.php<?phpecho 'file2:' . $a, PHP_EOL;echo 'file2:' . $b, PHP_EOL;$b = "file2";myFile.php<?php$a = 'myFile';$b = 'youFile';require_once 'includeandrequire/file2.php';echo $a, PHP_EOL;echo $b, PHP_EOL;// 输出结果// file2:myFile// file2:youFile// myFile// file2file3.php<?php$c = 'file3';myFile.php<?phpfunction test(){    require_once 'includeandrequire/file3.php';    echo $c, PHP_EOL; // file3}test();echo $c, PHP_EOL; // empty

被包含文件中可以获取到父文件中的变量,父文件也可以获得包含文件中的变量,但是,需要注意_once的一个特殊情况。

function foo(){    require_once 'includeandrequire/file3.php';    return $c;}for($a=1;$a<=5;$a++){    echo foo(), PHP_EOL;}// file3// empty// empty// empty// empty

使用_once并循环加载时,只有第一次会输出file3.php中的内容,这是为什么呢?因为现在的变量范围作用域在方法中,第一次加载完成后,后面的的文件不会再被加载了,这时后面四次循环并没有PHP中的include和require有什么不同c默认就是空值了。

如果两个方法中同时用_once加载了一个文件,第二个方法还会加载吗?

function test1(){    require_once 'includeandrequire/file1.php';}function test2(){    require_once 'includeandrequire/file1.php';}test1(); // file1test2(); // empty

抱歉,只有第一个方法会加载成功,第二个方法不会再次加载了。

那么,我们在日常的开发中,使用哪个更好呢?

  • 从效率来说,_once需要验证是否已经加载过文件,效率会低一些,但是并不是绝对的,甚至是我们肉眼不可见的降低,所以可以忽略它的效率问题。而它带来的好处则比不带_once的多得多

  • 本着错误提前的原则,使用require_once更好。因为将PHP报错级别调整为不显示警告后,include的警告信息会不可见,会带来不可预知的错误

  • 在方法中使用时,不应该用_once来加载文件,特别是这个文件需要在多个类或者方法中使用时,使用_once可能会导致后面的方法中无法载相同的文件

  • 使用require或include时,最好不要用括号,虽然的确可以这么使用,如 include ('xxx.php'); 它们是表达式关键字,不是系统方法,所以直接用 include 'xxx.php' 即可

include和require的文件如果有return,可以用变量接收retun回来的数据,另外它们还可以加载非PHP文件以及远程文件(远程加载需要确定php.ini中的allow_url_include为On),如:

file4.php<?phpreturn 'file4';file4.txt可以吧myFile.php<?php$v = require 'includeandrequire/file4.php';echo $v, PHP_EOL; // file4include 'includeandrequire/file4.txt';// 可以吧include 'https://www.baidu.com/index.html';// 百度首页的html代码

这下我们对于include和require的了解就非常深入了吧,这两个加载文件的方式并不复杂,但也很容易出现一些坑,特别是_once在方法中使用的时候一定要特别注意。最后,给一个小福利,封装一个一次性加载目录中所有文件的方法:

function include_all_once ($pattern) {    foreach (glob($pattern) as $file) {         require $file;    }}include_all_once('includeandrequire/*');
测试代码:Https://GitHub.com/zhangyue0503/dev-blog/blob/master/php/201911/source/%E5%BD%BB%E5%BA%95%E6%90%9E%E6%98%8E%E7%99%BDPHP%E4%B8%AD%E7%9A%84include%E5%92%8Crequire.php

感谢各位的阅读,以上就是“PHP中的include和require有什么不同”的内容了,经过本文的学习后,相信大家对PHP中的include和require有什么不同这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: PHP中的include和require有什么不同

本文链接: https://www.lsjlt.com/news/299220.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PHP中的include和require有什么不同
    这篇文章主要讲解了“PHP中的include和require有什么不同”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP中的include和require有什么不同”吧!在PHP中,有两种...
    99+
    2023-06-20
  • PHP中include和require有什么区别
    这篇文章主要介绍了PHP中include和require有什么区别,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。PHP include vs...
    99+
    2022-10-19
  • PHP中include和require语句有什么用
    小编给大家分享一下PHP中include和require语句有什么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!PHP inc...
    99+
    2022-10-19
  • PHP中的include和require怎么使用
    本篇内容介绍了“PHP中的include和require怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!概要require() 语句的...
    99+
    2023-06-27
  • PHP中怎么使用include和require
    这篇文章主要介绍PHP中怎么使用include和require,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!php的框架有哪些php的框架:1、Laravel,Laravel是一款免费并且开源的PHP应用框架。2、P...
    99+
    2023-06-14
  • include和require的区别是什么
    include和require的区别:include与require在处理引入文件的方式不同。include在引入文件出错是会产生一个warning,而require会产生错误中断。include在运行时才加载,而require在一开始就加...
    99+
    2022-10-21
  • PHP中include和require的使用详解
    在PHP中,有两种包含外部文件的方式,分别是include和require。他们之间有什么不同呢? 如果文件不存在或发生了错误,require产生E_COMPILE_ERROR级别...
    99+
    2022-11-12
  • php中use和include有什么区别
    php中use和include有什么区别?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。HP中use、include的区别include是导入文件,如果找不到文件,include...
    99+
    2023-06-15
  • php include和include_once有什么区别
    当我们在使用 PHP 编写网页时,有时我们需要在当前 PHP 文件中包含其他 PHP 文件中的代码。这时,就可以使用 include 或 include_once 函数来实现文件包含。那么,include 和 include_once 到底...
    99+
    2023-05-14
    include_once include php
  • php socket和curl有什么不同
    本文操作环境:Windows7系统、PHP7.1版、DELL G3电脑php socket和curl有什么不同?php的curl和socket的区别首先说下啥是socket:PHP使用berkely的socket库来创建他的连接,socke...
    99+
    2015-11-29
    php socket curl
  • PHP中require和require_once的区别是什么
    在PHP中,require和require_once都是用于引入文件的指令,它们之间的区别如下:1. require语句用于引入指定...
    99+
    2023-08-11
    PHP
  • PHP中include作用域有什么用
    本篇文章为大家展示了PHP中include作用域有什么用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。注意:本文档基于include叙述,但也适用于 require。这两种结构除了在如何处理包含失败...
    99+
    2023-06-17
  • PHP中include和include_once的区别是什么
    include和include_once都是PHP中用于包含文件的语句,但它们之间有一些区别。include语句用于包含指定的文件,...
    99+
    2023-08-11
    PHP
  • PHP和Bash编程中的算法有什么不同?
    算法是计算机编程中不可或缺的重要组成部分。无论是PHP还是Bash编程,算法都是实现各种功能的关键。然而,PHP和Bash编程中的算法存在一些不同。在本文中,我们将探讨这些不同之处,并通过演示代码来进一步说明。 编程语言的不同 PHP...
    99+
    2023-06-26
    并发 bash 编程算法
  • php中require的作用是什么
    php中require的作用是什么?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。require语句可以包含并运行指定文件,用于在执行流中插入写在其他文件中的有用...
    99+
    2023-06-15
  • php中include的用法是什么
    本文操作环境:Windows10系统、PHP7.1版、Dell G3电脑。php中include的用法是什么include (或 require)语句会获取指定文件中存在的所有文本/代码/标记,并复制到使用 include 语句的文件中。包...
    99+
    2017-01-28
    PHP
  • python中的return和yield有什么不同
    这篇文章主要介绍“python中的return和yield有什么不同”,在日常操作中,相信很多人在python中的return和yield有什么不同问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python中...
    99+
    2023-06-20
  • PHP服务器nginx和apache有什么不同
    区别:1、 apache是同步多进程模型,一个连接对应一个进程,而nginx是异步的,多个连接可以对应一个进程,nginx的负载能力比apache高;2、apache适合处理动态请求,而nginx适合处理静态和反向;3、nginx配置简洁,...
    99+
    2022-08-11
    apache php nginx
  • PHP 和 Django 并发编程有什么不同?
    PHP 和 Django 是两种常见的 Web 开发框架,它们都支持并发编程。然而,它们在并发编程方面存在一些不同之处。在本文中,我们将讨论 PHP 和 Django 的并发编程的不同之处。 首先,PHP 支持多进程和多线程并发编程。多进程...
    99+
    2023-06-13
    django 并发 接口
  • python中cookie和session有什么不同
    本篇文章给大家分享的是有关python中cookie和session有什么不同,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1、区别(1)cookie数据存储在客户浏览器上,s...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作