php include 和 require (包含文件)

在本教程中,您将学习如何在PHP中包含和评估文件。

将一个PHP文件包含到另一个PHP文件中

使用include() 和 require()语句可以将一个PHP文件中的代码包含在另一个PHP文件中。包含文件与从指定的文件复制脚本并将其粘贴到调用它的位置产生相同的结果。

您可以节省大量时间并通过包含文件来工作-只需将代码块存储在单独的文件中,然后使用include()和require()语句将其包含在任何需要的位置,而不必多次键入整个代码块。 一个典型的示例是在网站的所有页面中包含页眉,页脚和菜单文件。

include() 和 require()语句的基本语法可以通过以下方式给出:

include("path/to/filename"); 
或
include "path/to/filename";

require("path/to/filename"); 
或
require "path/to/filename";

提示:与print 和 echo语句一样,您可以在使用include 和  require语句时省略括号,如上所述。

以下示例将向您展示如何在网站的所有页面中分别包含分别存储在单独的“ header.php”,“ footer.php”和“ menu.php”文件中的通用页眉,页脚和菜单代码。使用此技术,只需更改一个文件即可立即更新网站的所有页面,从而节省了大量重复性工作。

<!DOCTYPE html>
<html>
<head>
    <title>菜鸟教程</title>
</head>

<?php include "header.php"; ?>
<?php include "menu.php"; ?>
    <h1>欢迎浏览我们的网站(www.cainiaojc.com)!</h1>
    <p>在这里,您会发现很多有用的信息。</p>
<?php include "footer.php"; ?>

</html>

include 和 require语句之间的区别

您可能在想,如果我们可以使用include()语句包含文件,那么我们为什么需要require()。通常,require()语句的运行方式类似于include()。

唯一的区别是— include()语句仅生成PHP警告,但如果找不到要包含的文件,则允许脚本继续执行,而require()语句将生成致命错误并停止脚本执行 。

<?php require "my_variables.php"; ?>
<?php require "my_functions.php"; ?>
<!DOCTYPE html>
<html>
<head>
    <title><?php displayTitle($home_page); ?></title>
</head>

<?php include "header.php"; ?>
<?php include "menu.php"; ?>
    <h1>欢迎浏览我们的网站(www.cainiaojc.com)!</h1>
    <p>在这里,您会发现很多有用的信息。</p>
<?php include "footer.php"; ?>

</html>

注意:如果包含库文件或包含运行应用程序所必需的函数和配置变量的文件(如数据库配置文件),建议使用 require()语句。

include_once 和 require_once语句

如果不小心在代码中使用 include 或 require 语句多次包含同一文件(通常是函数文件) ,可能会导致冲突。为了防止这种情况,PHP 提供了 include_once 和 require_once 语句。这些语句的行为方式与 include 和 require 语句相同,只有一个例外:
即使再次包含该文件,include_once和require_once语句也将只包含该文件一次,也就是说,如果指定的文件已包含在前一个语句中,则不会再次包含该文件。为了更好地理解它是如何工作的,我们来看一个示例。 假设我们有一个“ my_functions.php”文件,其代码如下:

<?php
function multiplySelf($var){
    $var *= $var; //将变量自身相乘
    echo $var;
}
?>

这是PHP脚本,其中包含“ my_functions.php”文件。

<?php
//包含文件
require "my_functions.php";
// 调用函数
multiplySelf(2); // 输出: 4
echo "<br>";
 
//再次包含该文件
require "my_functions.php";
// 调用函数
multiplySelf(5); // Doesn't execute
?>

当您运行上面的脚本时,您将看到类似以下的错误消息:“Fatal error: Cannot redeclare multiplySelf()”。发生这种情况的原因是'my_functions.php'被两次包含,这意味着该函数multiplySelf()被定义了两次,这导致PHP停止脚本执行并生成致命错误。现在,用require_once重写上面的示例。

<?php
// Including file
require_once "my_functions.php";
// 调用函数
multiplySelf(2); // 输出: 4
echo "<br>";
 
//再次包含该文件
require_once "my_functions.php";
// 调用函数
multiplySelf(5); // 输出: 25
?>

正如您看到的,通过使用require_once代替require,脚本可以按预期工作。