PHP 简明教程

PHP Include 与 Require 引用文件

1. PHP include 和 require 语句

在 PHP 中,通过使用 includerequire 语句,可以将一个 PHP 文件的内容插入到另一个 PHP 文件中(在服务器执行该文件之前)。

includerequire 语句除了在处理失败后的表现不同外,在其他方面都是完全相同的:

  • require 会生成致命错误(E_COMPILE_ERROR)并停止脚本运行。
  • include 只生成警告(E_WARNING),脚本将继续执行。

因此,如果您希望在文件缺失时停止执行并向用户显示错误,请使用 require。如果您希望继续执行脚本并输出结果(即使文件缺失),请使用 include

1.1 基础语法

include 'filename';

// 或者

require 'filename';

2. PHP include 示例

通过文件引用功能,可以轻松地在网站的多个页面中共享相同的 HTML 布局、页眉、页脚或函数。

2.1 示例 1:页脚文件

假设我们有一个名为 "footer.php" 的标准页脚文件,内容如下:

<?php
echo "<p>Copyright © 2006-" . date("Y") . " Begindev.com</p>";
?>

要在页面中引用此页脚,请使用 include 语句:

<html>
<body>

<h1>欢迎来到我的主页!</h1>
<p>一些文本内容。</p>
<p>更多文本内容。</p>
<?php include 'footer.php';?>

</body>
</html>

2.2 示例 2:菜单文件

假设我们有一个名为 "menu.php" 的标准菜单文件:

<?php
echo '<a href="/default.asp">首页</a> -
<a href="/html/default.asp">HTML 教程</a> -
<a href="/css/default.asp">CSS 教程</a> -
<a href="/js/default.asp">JavaScript 教程</a> -
<a href="default.asp">PHP 教程</a>';
?>

网站中的所有页面都应使用此菜单。以下是具体的实现方式:

<html>
<body>

<div class="menu">
<?php include 'menu.php';?>
</div>

<h1>欢迎来到我的主页!</h1>
<p>一些文本内容。</p>

</body>
</html>

2.3 示例 3:变量引用

假设我们有一个名为 "vars.php" 的文件,其中定义了一些变量:

<?php
$color='red';
$car='BMW';
?>

即使文件是在主页面之外定义的,引用后也可以直接在主页面中使用这些变量:

<html>
<body>

<h1>欢迎来到我的主页!</h1>
<?php
include 'vars.php';
echo "我有一辆" . $color . "色的" . $car . "。";
?>

</body>
</html>

3. PHP include vs. require

require 语句同样用于将文件引用到 PHP 脚本中。

然而,includerequire 之间有一个巨大的差异:当文件通过 include 语句被引用且 PHP 无法找到它时,脚本将继续执行。

使用 include 的示例:

<html>
<body>

<h1>欢迎来到我的主页!</h1>
<?php
include 'noFileExists.php';
echo "我有一辆" . $color . "色的" . $car . "。";
?>

</body>
</html>

在这种情况下,echo 语句仍会执行,因为 include 只会产生警告。

使用 require 的示例:

如果我们在相同的案例中使用 require 语句,echo 语句将不会被执行,因为在文件缺失后脚本执行会立即停止。

<html>
<body>

<h1>欢迎来到我的主页!</h1>
<?php
require 'noFileExists.php';
echo "我有一辆" . $color . "色的" . $car . "。";
?>

</body>
</html>

3.1 应该选择哪一个?

建议使用 require 而不是 include

因为如果脚本在缺少关键文件(如数据库连接文件、核心配置、函数库等)的情况下继续运行,可能会导致安全漏洞或产生不可预知的错误。使用 require 可以确保在关键组件缺失时直接熔断程序,从而保护应用程序的完整性。