require、include、require_once、include_once 在 PHP 中:完整解析与示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

PHP 中的 require、include、require_once、include_once:如何选择以及为什么这很重要?

\n\n

您是否曾经有过这样的想法:“PHP 中的 require 和 include 到底有什么区别?为什么还要发明这些奇怪的 _once 版本?”——如果是这样,您并不孤单。这个问题是 Stack Overflow 上最热门的问题之一(成千上万的浏览量和数十个赞)。这并非偶然。

\n\n

每天,成千上万的 PHP 开发者——从新手到专家——都在使用这些函数。但许多人都是 机械地 使用它们,而没有考虑后果。这是不对的。错误的选择可能导致致命错误、代码重复,甚至更糟的是,导致仅在正式服务器上才会出现的难以察觉的错误。

\n\n

今天,我们将一劳永逸地弄清楚 require、include、require_once 和 include_once 的区别。您不仅会学到理论,还会看到可以直接运行的实时代码示例。我们开始吧!

\n\n

1. 基础:为什么要包含文件?

\n\n

在讨论区别之前,让我们先回顾一下我们为什么要这样做。在实际项目中,PHP 代码不会写在一个巨大的文件中。那将是一场维护噩梦。相反,代码被分成模块:

\n\n
    \n
  • 配置 — config.php
  • \n
  • 函数 — functions.php
  • \n
  • 模板 — header.php、footer.php
  • \n
  • 类 — User.php、Database.php
  • \n
\n\n

这时我们就需要 require 和 include。它们实际上是将一个文件的内容“粘贴”到另一个文件中。PHP 处理包含的文件时,就好像它的代码直接写在这个位置一样。

\n\n

2. require vs include:主要区别——对错误的反应

\n\n

这是最重要的一点。请永远记住它。

\n\n

include — 软包含

\n\n

include 尝试包含文件。如果文件不存在或发生错误,PHP 会发出 Warning(警告),但 继续执行脚本。

\n\n
<?php\n// include.php\necho "这是 include。";\ninclude '不存在的文件.php'; // 会触发 Warning\necho "脚本继续运行!";\n?>\n
\n\n

结果:

\n
这是 include。Warning: include(不存在的文件.php): failed to open stream...\n脚本继续运行!
\n\n

看到了吗?脚本没有崩溃,而是继续执行。当包含文件是可选的时,这很方便。例如,当您包含一个对页面运行不关键的小部件时。

\n\n

require — 硬包含

\n\n

require 做同样的事情,但有一个区别:如果找不到文件,PHP 会发出 Fatal Error(致命错误) 并 立即停止脚本。

\n\n
<?php\n// require.php\necho "这是 require。";\nrequire '不存在的文件.php'; // 会触发 Fatal Error\necho "这段代码永远不会执行!";\n?>\n
\n\n

结果:

\n
这是 require。Fatal error: Uncaught Error: Failed opening required '不存在的文件.php'...
\n\n

脚本终止了。结束了。之后——一片寂静。

\n\n

何时使用什么?

\n
    \n
  • require — 用于关键文件:数据库配置、核心类、路由器。如果没有它们,网站无法运行。
  • \n
  • include — 用于可选块:模板、小部件、广告横幅。如果文件未包含,页面只会显示没有该块。
  • \n
\n\n

3. require_once 和 include_once:防止重复

\n\n

现在想象一个场景。您有一个文件 config.php,它声明常量和函数。您 p

博客

书籍推荐