ZetCode

PHP require 语句

最后修改于 2025 年 4 月 16 日

PHP require 语句用于包含和评估特定文件。 它是代码组织和重用的关键。 与 include 不同,如果文件丢失,require 将停止脚本执行。 这使其成为关键依赖项的理想选择。

基本定义

require 语句包含并评估指定的文件。 如果找不到该文件,它会产生一个致命错误并停止执行。

PHP 有四个文件包含语句:require, require_once, includeinclude_once。 *_once 变体可防止重复包含。

语法:require 'filename.php';require('filename.php');。 文件路径可以是绝对路径或相对于包含脚本的路径。

基本 require 用法

此示例演示了使用 require 包含文件的最简单方法。

basic_require.php
<?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 之间的区别。

require_vs_include.php
<?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 来防止重复包含。

require_once.php
<?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 模板文件。

template_include.php
<?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 指定文件路径的不同方法。

path_types.php
<?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 文件。

conditional_require.php
<?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。

autoloader.php
<?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 代替。

最佳实践

来源

PHP require 文档

本教程介绍了 PHP require 语句,并提供了实际示例,展示了各种文件包含场景和最佳实践。

作者

我叫 Jan Bodnar,是一名充满激情的程序员,拥有丰富的编程经验。 自 2007 年以来,我一直在撰写编程文章。 迄今为止,我撰写了 1,400 多篇文章和 8 本电子书。 我拥有超过十年的编程教学经验。

列出 所有 PHP 教程