【问题标题】:PHP: require versus include: practical considerations?PHP:require vs include:实际考虑?
【发布时间】:2012-07-10 09:22:05
【问题描述】:

我读过 include 和 require 之间的区别之一是 而 include 仅包含包含的文件,如果 include 语句是 遇到,require 将文件包含到托管 require 的文件中 即使执行流程未达到要求代码,也可以声明。

这有什么影响。毕竟,如果我有一个文件说:

<?php
  echo __LINE__;
?>

输出将始终为 3,而不是在 在包含此类包含文件的文件中的位置。

【问题讨论】:

    标签: php include require


    【解决方案1】:

    requireinclude 都在执行流程中包含它们的文件。

    一个简单的测试用例是:

    if (false) {
      require_once("Nonexistent.php");
    }
    echo "I'm doing SCIENCE and I'm still alive.\n";
    

    【讨论】:

      【解决方案2】:

      假设您正在运行一个关键任务应用程序,并且每秒将损失 1 美元。有些库仅在特定情况下使用,不会影响您的业务流程。您可能应该对这些可选库使用 include_once。因为如果文件不存在,require 将阻止您的应用程序运行并出现致命错误。

      【讨论】:

        【解决方案3】:

        我个人总是使用require_once,我发现在大多数情况下它是您所需要的(您要么获得页面一次,要么停止脚本)。如果你想“尝试”包括一些东西,include 会抛出你需要隐藏的警告。但这只是糟糕的编程习惯,一个简单的if (file_exists($file)) require_once $file; 就可以解决问题,并且完全胜过include

        所以在我看来,require 胜出。

        PS:被秒杀!

        【讨论】:

        • 这如何回答这个问题?
        【解决方案4】:

        require,或者更好的是,require_once 应该专门用于当您想要包含应用程序实际需要的代码时,例如您需要的任何库。 include 和它的兄弟 include_once 应该只在执行脚本不需要包含的文件时使用,例如在加载侧边栏或一些相切的内容时。

        这两个语句之间唯一真正的区别是找不到文件,require 会抛出一个致命错误,include 只会抛出一个警告并继续愉快地咕咕叫离开。

        我相信requireinclude 都以完全相同的方式加载和解析。如果require 会在给定的上下文中加载文件,include 也会如此。

        【讨论】:

          【解决方案5】:

          据我所知,这不是 require 的工作方式。唯一实际的区别是,如果无法包含文件,require 将导致脚本终止,并且 include 只会抛出警告并继续执行。

          一个非常重要的习惯用法取决于您声明的行为不正确:条件要求的文件。

          if(is_secure_page()) {
            require "security.php";
          }
          

          【讨论】:

            【解决方案6】:

            据我所知,这根本不是真的。如果代码中没有到达require这一行,那么文件肯定不会被包含进来。

            The PHP Manual on require 状态:

            requireinclude 相同 except 在失败时它也会 产生一个致命的 E_COMPILE_ERROR 级错误。

            (强调“除外”是我加的)

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2012-03-21
              • 2014-11-10
              • 2022-11-18
              • 2021-04-26
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-08-25
              相关资源
              最近更新 更多