当前位置: 首页 > 编程笔记 >

php使用include 和require引入文件的区别

宇文良骏
2023-03-14
本文向大家介绍php使用include 和require引入文件的区别,包括了php使用include 和require引入文件的区别的使用技巧和注意事项,需要的朋友参考一下

最近有小伙伴,提问了有关于require_once的有关问题,对于程序中遇到的问题,无聊难度大小,只要bug存在就还值得我们去探索,去解决。针对这个问题,我把include和require的详细用法进行归纳。(结合查阅资料和自己的理解,整合出来的)希望能给有需要的小伙伴一点帮助。

引入文件:

首先需要一个php文件:

<?php
class shao//类名必须和文件名相同!!!
{
  public $xxx="666";
}
$shili = new shao();
echo $shili->xxx;
?>

引用:

<?php
//引入文件
include "shao.php";//引用文件;只能引用一遍
//引用多个则费劲
//include_once("shao.php");//一次又一次
//也可以require ("shao.php");
?>

其中include与require的区别:

require:

执行到require()时,只会读取一次档案,故常放在程序开头,档案引入后PHP会将网页档重新编译,让引入档成为原先网页的一部分。

require() :无条件包含,如果文件不存在,会报出一个fatal error.脚本停止执行
require遇到错误时,直接报错并停止运行程序

include:

执行到include()时,每次皆会读取档案,故常用于流程控制的区段,如条件判断或循环中。
include() : 有条件包含,如果文件不存在,会给出一个 warning,但脚本会继续执行
include遇到错误时(引用的文件不存在),PHP只是报错,但程序会继续运行下去

 以下为补充:

1. include有返回值,而require没有。
2. include()包括并运行指定文件 在处理失败时include() 产生一个警告,被导入的程序代码都会被执行,而且这些程序在执行的时候会拥有和源文件中呼叫到include()语句的位置相同的变量范围。你可以导入同一个服务器中的静态页面。
3. include_once()的作用和include()是几乎相同的 唯一的差别在于include_once()会先检查要导入的档案是不是已经在该程序中的其它地方被导入过了,如果有的话就不会再次重复导入(这项功能有时候是很重要的,比方说要导入的里面宣告了一些你自行定义好的函数,那么如果在同一个程序重复导入这个文件,在第二次导入的时候便会发生错误讯息,因为PHP不允许相同名称的函数被重复宣告第二次)。
4. require()会将目标文件的内容读入,并且把自己本身代换成这些读入的内容 在处理失败时require() 则导致一个致命错。 这个读入并且代换的动作是在PHP引擎编译你的程序代码的时候发生的,而不是发生在PHP引擎开始执行编译好的程序代码的时候(PHP 3.0引擎的工作方式是编译一行执行一行,但是到了PHP 4.0以后就有所改变了,PHP 4.0是先把整个程序代码全部编译完成后,再将这些编译好的程序代码一次执行完毕,在编译的过程中不会执行任何程序代码)。require()通常来导入静态的内容,而include()则适合用导入动态的程序代码。
5. 如同include_once(),require_once()会先检查目标文件的内容是不是在之前就已经导入过了,如果是的话,便不会再次重复导入同样的内容。
6. require是无条件包含也就是如果一个流程里加入require,无论条件成立与否都会先执行require。
7. require通常放在PHP程序的最前面,PHP程序在执行前,就会先读入require所指定引入的文件,使它变成PHP程序网页的一部份。常用的函数,亦可以这个方法将它引入网页中。
8. include一般是放在流程控制的处理部分中PHP程序网页在读到include的文件时,才将它读进来。这种方式可以把程序执行时的流程简单化。

推荐使用require_once()和include_once(),可以检测文件是否有重复包含。

自动加载:

被引用的php文件:

<?php
class shao//类名必须和文件名相同!!!
{
  public $xxx="666";
}

?>

自动加载:

<?php
function __autoload($asd)
{
  require $asd.".php";//可填地址查找
}
$shili = new shao();
echo $shili->xxx;
?>
 类似资料:
  • 问题内容: 它们之间有什么区别吗?是否优先使用它们?将一个使用在另一个上是否有任何优势?哪种安全性更好? 问题答案: 您可以在以下页面的详细PHP手册中找到差异: 等同 于失败,也会产生致命的 错误。换句话说,它将停止脚本,而include仅发出警告( ),该警告允许脚本继续运行。

  • 问题内容: 我知道PHP的基本用法要求,需要一次,包含一次和包含一次。但是我对何时使用它们感到困惑。 示例:我有3个文件,例如:settings.php,database.php和index.php。 在database.php文件中,我写道: 然后在index.php中,我写道: 所以我两次加载settings.php,可以吗?有使用这些功能的提示吗? 问题答案: 包含一个文件,如果找不到该文件

  • 本文向大家介绍PHP函数include include_once require和require_once的区别,包括了PHP函数include include_once require和require_once的区别的使用技巧和注意事项,需要的朋友参考一下 了解下include、include_once、require和require_once这4个函数: include函数:会将指定的文件读入

  • 问题内容: 在PHP中: 我什么时候应该使用vs. 我什么时候应该使用vs. 问题答案: 也有和。 所以你的问题应该是… 我什么时候应该使用vs. 我什么时候应该使用vs. 这里描述1的答案。 require()函数与include()相同,不同之处在于它对错误的处理方式不同。如果发生错误,include()函数将生成警告,但脚本将继续执行。require()产生致命错误,脚本将停止。 在这里可以

  • 问题内容: 我是webpack的新手,现在我在我的一个有角度的项目中第一次使用它。 我想在我的html文件中使用require函数,以便为ng-include要求模板,如下所示: 我知道有像ng- cache和ngtemplate这样的加载器,但它们无法按我需要的方式工作。对于它们,我必须先在js中要求模板,然后再在html文件中使用模板名称。 如何做到这一点? 问题答案: 您可以在npm上使用w

  • 本文向大家介绍C / C ++中的#include <文件名>和#include“文件名”之间的区别?,包括了C / C ++中的#include <文件名>和#include“文件名”之间的区别?的使用技巧和注意事项,需要的朋友参考一下 两种形式之间的区别在于预处理器搜索要包含的文件的位置。 #include <文件名> 预处理器以实现相关的方式进行搜索,它搜索由编译器预先指定的目录。此方法通常