在我们实际的生产工作中,当构建一个较大的系统时,总有一些内容是需要重复使用的, 如一些常用的函数,或者一些公共 html 元素如菜单,页脚等。我们可以把这些公共的内容集中写入一些文件内, 然后再根据具体情况,在需要的地方包含进来,这样可以节约大量的开发时间,使代码文件统一简练,以利于更好的维护。
在PHP中, 有require、require_once、include、include- once四种方法包含一个文件。
函数 包含失败 特点
Inlcude 返回一条警告 文件继续向下执行。通常用于动态包含
Require 一个致命的错 代码就不会继续向下执行。通常包含极为重要的文件,整个代码甭想执行
Include_once 返回一条警告 除了原有include的功能以外,它还会做once检测,如果文件曾经已经被被包含过,不再包含
Require_once 一个致命的错 除了原的功能一外,会做一次once检测,防止文件反复被包含
PHP include 和 require 语句
在 PHP 中,您可以在服务器执行 PHP 文件之前在该文件中插入一个文件的内容。
include 和 require 语句用于在执行流中插入写在其他文件中的有用的代码。
include 和 require 除了处理错误的方式不同之外,在其他方面都是相同的:
require 生成一个致命错误(E_COMPILE_ERROR),在错误发生后脚本会停止执行。
include 生成一个警告(E_WARNING),在错误发生后脚本会继续执行。
因此,如果您希望继续执行,并向用户输出结果,即使包含文件已丢失,那么请使用 include。 否则,在框架、CMS 或者复杂的 PHP 应用程序编程中,请始终使用 require 向执行流引用关键文件。 这有助于提高应用程序的安全性和完整性,在某个关键文件意外丢失的情况下。
包含文件省去了大量的工作。这意味着您可以为所有网页创建标准页头、页脚或者菜单文件。 然后,在页头需要更新时,您只需更新这个页头包含文件即可。
语法
include 'filename';
或者
require 'filename';
基础实例
假设您有一个标准的页头文件,名为 "header.php"。如需在页面中引用这个页头文件,请使用 include/require:
<html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <?php include 'header.php'; ?> <h1>欢迎来到我的主页!</h1> <p>一些文本。</p> </body> </html>
实例 2
假设我们有一个在所有页面中使用的标准菜单文件。
"menu.php":
echo '<a href="/">主页</a>
<a href="/html">HTML 教程</a>
<a href="/php">PHP 教程</a>';
网站中的所有页面均应引用该菜单文件。以下是具体的做法:
<html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <div class="leftmenu"> <?php include 'menu.php'; ?> </div> <h1>欢迎来到我的主页!</h1> <p>一些文本。</p> </body> </html>
实例 3
假设我们有一个定义变量的包含文件("vars.php"):
<?php $color='red'; $car='BMW'; ?>
这些变量可用在调用文件中:
<html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <h1>欢迎来到我的主页!</h1> <?php include 'vars.php'; echo "I have a $color $car"; // 输出 I have a red BMW ?> </body> </html>
实例 4
创建一个file.php文件:
<?php $word = "你好!"; ?>
然后在另外的文件如 test.php 中包含它(两个文件在同一目录):
<?php echo "包含内容为:".$word."<br />"; include("file.php"); echo "包含内容为:".$word; ?>
运行 test.php 输出如下:
包含内容为:
包含内容为:你好!
include() 与 require() 的区别
require() 语句也可用于文件的包含,在使用上等同于 include() 。 但二者也有一些细微差别,可以视实际情况采用 include() 还是 require() 。
二者区别如下:
当包含的文件不存在时(包含发生错误),如果使用 require() ,则程序立刻停止执行, 而使用 include() 的话,系统除了提示错误外,下面的程序内容还会继续执行。 大多情况下推荐使用 require() 函数,以避免在错误引用发生后的程序继续执行
不管 require() 语句是否执行,程序执行包含文件都被加入进来, include() 只有执行的时候文件才会被包含。所以如果是有条件判断的情况下,用 include() 显然更合适
使用 require() 多次引用时,只执行一次对被引用文件的引用动作,而 include() 则每次都要进行读取和评估后引用文件
once
include和require分别对应了一个once函数:include_once 和 require_once
函数的功能没有什么差异,主要的作用是避免重复包含