PHP require 语句
最后修改于 2025 年 4 月 16 日
PHP require
语句用于包含和评估特定文件。 它是代码组织和重用的关键。 与 include
不同,如果文件丢失,require 将停止脚本执行。 这使其成为关键依赖项的理想选择。
基本定义
require
语句包含并评估指定的文件。 如果找不到该文件,它会产生一个致命错误并停止执行。
PHP 有四个文件包含语句:require
, require_once
, include
和 include_once
。 *_once 变体可防止重复包含。
语法:require 'filename.php';
或 require('filename.php');
。 文件路径可以是绝对路径或相对于包含脚本的路径。
基本 require 用法
此示例演示了使用 require 包含文件的最简单方法。
<?php declare(strict_types=1); require 'config.php'; echo "Database host: " . DB_HOST;
代码包含 config.php,该文件可能定义了数据库常量。 包含后,我们可以访问在 config.php 中定义的 DB_HOST。 require 语句使 config.php 的内容在当前范围内可用。
require vs include
此示例显示了在文件丢失时 require 和 include 之间的区别。
<?php declare(strict_types=1); // This will produce a warning but continue execution include 'missing_file.php'; // This will produce a fatal error and stop execution require 'missing_file.php'; echo "This line won't be reached.";
include 语句允许脚本在文件丢失后继续执行。 require 语句对于丢失的文件会完全停止执行。 对于没有它脚本无法运行的基本组件,请使用 require。
require_once
此示例演示了如何使用 require_once 来防止重复包含。
<?php declare(strict_types=1); require_once 'functions.php'; require_once 'functions.php'; // Won't include again greetUser('John');
第二次 require_once 调用不会再次包含 functions.php。 这可以防止函数重定义错误。 当同一个文件可能通过不同的路径多次包含时,请使用 require_once。
包含 HTML 模板
此示例显示了如何使用 require 包含 HTML 模板文件。
<?php declare(strict_types=1); $title = "Welcome Page"; $content = "Hello, welcome to our website!"; require 'header.php'; require 'content.php'; require 'footer.php';
该脚本包含单独的 header、content 和 footer 文件。 这种模块化方法使维护大型网站更容易。 每个模板文件都可以访问在包含之前定义的变量。
相对路径与绝对路径
此示例演示了使用 require 指定文件路径的不同方法。
<?php declare(strict_types=1); // Relative to current directory require 'lib/utils.php'; // Relative to parent directory require '../config/settings.php'; // Absolute path (better for complex projects) require __DIR__ . '/vendor/autoload.php';
第一个使用相对路径,第二个进入一个目录级别。 第三个使用 __DIR__ 来表示绝对路径,这在复杂的目录结构中更可靠。 绝对路径可以防止包含错误。
条件 require
此示例显示了如何根据运行时检查有条件地 require 文件。
<?php declare(strict_types=1); if (ENVIRONMENT === 'development') { require 'dev_tools.php'; } elseif (ENVIRONMENT === 'production') { require 'production_config.php'; } else { die('Invalid environment'); }
代码根据 ENVIRONMENT 常量加载不同的配置文件。 这种模式通常用于特定于环境的设置。 die() 函数为无效的环境提供后备。 在 require 之前始终进行验证。
自动加载类
此示例演示了在简单类自动加载器中使用 require。
<?php declare(strict_types=1); spl_autoload_register(function ($className) { $file = __DIR__ . '/classes/' . str_replace('\\', '/', $className) . '.php'; if (file_exists($file)) { require $file; } }); $obj = new MyClass();
自动加载器将类名转换为文件路径并 require 它们。 这消除了对每个类的手动 require。 file_exists 检查可以防止丢失类文件的错误。 现代 PHP 使用 Composer 代替。
最佳实践
- 基本文件: 对于脚本无法运行的文件,请使用 require。
- 路径处理: 最好使用 __DIR__ 的绝对路径来提高可靠性。
- 安全性: 永远不要根据未经验证的用户输入包含文件。
- 组织: 将包含的文件保存在一个专用的目录结构中。
- 性能: 在生产中使用 opcache 以获得更好的包含性能。
来源
本教程介绍了 PHP require 语句,并提供了实际示例,展示了各种文件包含场景和最佳实践。
作者
列出 所有 PHP 教程。