返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP中include和require的使用详解
  • 575
分享到

PHP中include和require的使用详解

2024-04-02 19:04:59 575人浏览 泡泡鱼
摘要

在PHP中,有两种包含外部文件的方式,分别是include和require。他们之间有什么不同呢? 如果文件不存在或发生了错误,require产生E_COMPILE_ERROR级别

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"; // error

echo 111; // 使用include时111会输出

// file1.php 中只有一行代码echo 'file1';
require_once 'includeandrequire/file1.php'; // file1
require_once 'includeandrequire/file1.php'; // noting

include_once 'includeandrequire/file1.php'; // noting
include_once 'includeandrequire/file1.php'; // noting

require 'includeandrequire/file1.php'; // file1
require 'includeandrequire/file1.php'; // file1

require 'includeandrequire/file1.php'; // file1
require 'includeandrequire/file1.php'; // file1

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


file2.php

<?php

echo '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
// file2

file3.php
<?php

$c = 'file3';

myFile.php
<?php
function 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中的内容,这是为什么呢?因为现在的变量范围作用域在方法中,第一次加载完成后,后面的的文件不会再被加载了,这时后面四次循环并没有$c被定义,$c默认就是空值了。

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


function test1(){
    require_once 'includeandrequire/file1.php';
}
function test2(){
    require_once 'includeandrequire/file1.php';
}
test1(); // file1
test2(); // 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
<?php

return 'file4';

file4.txt
可以吧

myFile.php
<?php
$v = require 'includeandrequire/file4.php';
echo $v, PHP_EOL; // file4

include '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/*');

测试代码:GitHub.com/zhangyue050…

以上就是PHP中include和require的使用详解的详细内容,更多关于PHP include和require的使用的资料请关注编程网其它相关文章!

--结束END--

本文标题: PHP中include和require的使用详解

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

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

猜你喜欢
  • PHP中include和require的使用详解
    在PHP中,有两种包含外部文件的方式,分别是include和require。他们之间有什么不同呢? 如果文件不存在或发生了错误,require产生E_COMPILE_ERROR级别...
    99+
    2024-04-02
  • 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
  • PHP中include和require语句有什么用
    小编给大家分享一下PHP中include和require语句有什么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!PHP inc...
    99+
    2024-04-02
  • php中include(与require(的区别
    php 中 include() 和 require() 的区别:找不到文件时:require() 触发致命错误,include() 触发警告。效率:require() 通常比 inclu...
    99+
    2024-04-27
  • php中include(与require(的区别
    php 中 include() 和 require() 的区别:找不到文件时:require() 触发致命错误,include() 触发警告。效率:require() 通常比 inclu...
    99+
    2024-04-27
  • PHP中的include和require有什么不同
    这篇文章主要讲解了“PHP中的include和require有什么不同”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP中的include和require有什么不同”吧!在PHP中,有两种...
    99+
    2023-06-20
  • PHP中include和require有什么区别
    这篇文章主要介绍了PHP中include和require有什么区别,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。PHP include vs...
    99+
    2024-04-02
  • node.js中的require使用详解
    代码注释里已经描述的非常的清晰,这里就不多废话了,直接奉上代码: //建立一个页面2.js;代码如下 var name="思思博士"; exports.name=name; //建立一个页面1....
    99+
    2022-06-04
    详解 node js
  • PHP中require和require_once怎么使用
    在PHP中,`require`和`require_once`都是用于引入文件的命令。使用`require`命令时,需要指定一个文件路...
    99+
    2023-08-11
    PHP
  • PHP中include和include_once怎么使用
    在PHP中,include和include_once用于将一个文件的内容包含到另一个文件中。使用include时,语法如下:```p...
    99+
    2023-08-11
    PHP
  • php中的include怎么使用
    今天小编给大家分享一下php中的include怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。在PHP中,includ...
    99+
    2023-06-29
  • JavaScript中require和import的区别详解
    ES6标准发布后,module成为标准,标准的使用是以export指令导出接口,以import引入模块,但是在我们一贯的node模块中,我们采用的是CommonJS规范,使用requ...
    99+
    2024-04-02
  • PHP 代码中的 include 和 require 语句如何影响函数执行顺序?
    在 php 中,include 和 require 语句用于包含外文件,区别在于错误处理方式:include:未找到文件时产生警告,继续执行。require:未找到文件时产生致命错误,中...
    99+
    2024-04-17
    php 函数执行顺序
  • php中require的用法
    require 函数在 php 中用于包含外部文件,经过检查后将文件内容插入当前脚本。它与 include 函数类似,但如果文件不存在,require 会触发致命错误,而 include...
    99+
    2024-04-26
  • php中include的作用
    php 中 include 可将外部文件内容插入到当前脚本中。它方便模块化代码、代码重用和延迟加载,但也可能导致文件丢失、性能开销和命名空间冲突。 PHP 中 include 的作用 ...
    99+
    2024-04-29
    延迟加载
  • PHP中require()函数如何使用
    PHP中require()函数如何使用,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。调用文件config.inc的程序代码:< php  &...
    99+
    2023-06-17
  • 解析android中include标签的使用
    在一个项目中我们可能会需要用到相同的布局设计,如果都写在一个xml文件中,代码显得很冗余,并且可读性也很差,所以我们可以把相同布局的代码单独写成一个模块,然后用到的时候可以通过...
    99+
    2022-06-06
    include Android
  • 详解Node中导入模块require和import的区别
    ES6标准发布后,module成为标准,标准的使用是以export指令导出接口,以import引入模块,但是在我们一贯的node模块中,我们采用的是CommonJS规范,使用require引入模块,使用mo...
    99+
    2022-06-04
    详解 模块 区别
  • html include标签的用法详解
    HTML的include标签是一种用于在HTML文件中包含其他文件内容的标签,它可以将一个外部文件的内容嵌入到当前的HTML文件中。...
    99+
    2023-08-29
    html
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作