【问题标题】:Can someone explain deeply in include and require in php? [duplicate]有人可以在 php 中深入解释 include 和 require 吗? [复制]
【发布时间】:2018-02-26 00:14:36
【问题描述】:

我知道includerequire 用于在其他文件(如html 文件)中插入php。但我能理解的是两者的使用时机。谁能深入解释一下他们两个?我在网上找到了一些资料,但都没有很好地解释我认为,我的意思是不够清楚。

【问题讨论】:

  • 您最好针对您无法理解的具体事物以及您在使用中遇到的问题提出具体问题。
  • 如果你require,如果找不到所需的文件,代码的执行将停止。如果你include 它不会停止。

标签: php html include require


【解决方案1】:

PHP 的 includerequire 以及完成列表的 include_oncerequire_once 是允许一个 PHP 文件来获取另一个文件(在大多数情况下是另一个 PHP 文件),并在语句的位置插入和评估获取的文件。

正如您所写,这些语句不是“将 php 插入其他文件,如 html 文件”,而是允许 PHP 应用程序将其代码库结构化为单独文件的概念。代码获取其他代码获取其他代码等等。

上述说法的区别基本上是:

include 'a/file/that/does/not/exist.php'; //emits a warning, but doesn't stop the script 

require 'a/file/that/does/not/exist.php'; //throws a fatal error and stops script execution

...并且使用 require_once 和 include_once,您可以防止“双重包含”,这可能会导致函数重定义等问题

【讨论】:

    【解决方案2】:

    在 PHP documentation about required 他们这样说:

    require 与 include 相同,但失败时也会产生致命的 E_COMPILE_ERROR 级别错误。换句话说,它会停止脚本,而 include 只会发出一个警告 (E_WARNING) 允许脚本继续。

    for include说这个

    include 语句包含并评估指定的文件。 read more

    显式示例

    使用 include 的这一行将包含 Php 文件,因为该文件存在。

    <? include("file1.php"); //This file exists ?>
    

    使用 include 的这一行将在您的界面中显示警告,因为该文件不存在。在您的界面上显示此消息取决于您在 php.ini 中输入的 level of error

    <? include("filenotexist.php"); //This file NO exists ?>
    

    结果

    Warning: include(filenotexist.php) [function.include]: failed to open stream: No such file or directory in ****** on line 6
    Warning: include() [function.include]: Failed opening 'filenotexist.php' for inclusion (include_path='.;C:\php\pear') in **** on line 6
    

    使用 required 的这一行将与包含执行相同的操作,它将包含 php 文件,因为该文件存在。

    <? require("file1.php"); //This file exist ?>
    

    此行使用必需,因此您会收到警告和致命错误,因为该文件不存在。 这个致命错误是您要寻找的主要区别

    <? require("filenoexists1.php"); //This file NO exist ?> 
    

    结果

    Warning: require(filenoexists1.php) [function.require]: failed to open stream: No such file or directory in **** on line 6
    Fatal error: require() [function.require]: Failed opening required 'filenoexists1.php' (include_path='.;C:\php\pear') in *** on line 6
    

    还有另一个有趣的函数,叫做required_once。如果您需要多次使用同一个文件

    <? require("hola.php"); //This file exist ?> 
    <? require("hola.php"); //This file exist ?> 
    <? require("hola.php"); //This file exist ?> 
    <? require("hola.php"); //This file exist ?> 
    <? require("hola.php"); //This file exist ?> 
    

    结果是 5 次 hola。这是有道理的,因为您 需要该文件 6 次。

    hola hola hola hola hola
    

    Required_once即使包含5次,Php也只会包含一次。

    <? require_once("hola.php"); //This file exist ?> 
    <? require_once("hola.php"); //This file exist ?> 
    <? require_once("hola.php"); //This file exist ?> 
    <? require_once("hola.php"); //This file exist ?> 
    <? require_once("hola.php"); //This file exist ?> 
    

    结果是

    hola
    

    希望对你有帮助 丹尼尔

    【讨论】:

    • 发帖人明确表示他们无法理解文档,因此不清楚将文档粘贴到他们身上会完成什么。
    • @pvg 我放了文档链接,以防他不知道。他在任何时候都没有说“我不理解文档”。我什至在我的回答中加入了关于 require 的解释并包含在内。他不必访问链接即可了解其中的区别。另外,答案可以帮助更多的人,不仅仅是发帖人,所以你也要好好想想。
    • @pvg 我改进了我的答案。请看一看。
    猜你喜欢
    • 2014-05-30
    • 2011-04-05
    • 1970-01-01
    • 2017-10-03
    • 1970-01-01
    • 1970-01-01
    • 2013-11-20
    • 2010-10-10
    • 2021-03-22
    相关资源
    最近更新 更多