服务器端包含 (SSI) 用于创建可在多个页面重复使用的函数、页眉、页脚或元素。
include (或 require)语句会获取指定文件中存在的所有文本/代码/标记,并复制到使用 include 语句的文件中。
包含文件很有用,如果您需要在网站的多张页面上引用相同的 PHP、HTML 或文本的话。
通过 include 或 require 语句,可以将 PHP 文件的内容插入另一个 PHP 文件(在服务器执行它之前)。
include 和 require 语句是相同的,除了错误处理方面:
因此,如果您希望继续执行,并向用户输出结果,即使包含文件已丢失,那么请使用 include。否则,在框架、CMS 或者复杂的 PHP 应用程序编程中,请始终使用 require 向执行流引用关键文件。这有助于提高应用程序的安全性和完整性,在某个关键文件意外丢失的情况下。
包含文件省去了大量的工作。这意味着您可以为所有页面创建标准页头、页脚或者菜单文件。然后,在页头需要更新时,您只需更新这个页头包含文件即可。
include 'filename';
或
require 'filename';
假设我们有一个名为 "footer.php" 的标准的页脚文件,就像这样:
<?php echo "<p>Copyright © 2006-" . date("Y") . "365jz.com</p>"; ?>
如需在一张页面中引用这个页脚文件,请使用 include 语句:
<html> <body> <h1>欢迎访问我们的首页!</h1> <p>一段文本。</p> <p>一段文本。</p> <?php include 'footer.php';?> </body> </html>
假设我们有一个名为 "menu.php" 的标准菜单文件:
<?php echo '<a href="/index.php">首页</a> - <a href="/html/index.php">HTML 教程</a> - <a href="/css/index.php">CSS 教程</a> - <a href="/js/index.php">JavaScript 教程</a> - <a href="/php/index.php">PHP 教程</a>'; ?>
网站中的所有页面均使用此菜单文件。具体的做法是(我们使用了一个 <div> 元素,这样今后就可以轻松地通过 CSS 设置样式):
<html> <body> <div class="menu"> <?php include 'menu.php';?> </div> <h1>欢迎访问我的首页!</h1> <p>Some text.</p> <p>Some more text.</p> </body> </html>
假设我们有一个名为 "vars.php" 的文件,其中定义了一些变量:
<?php $color='银色的'; $car='奔驰轿车'; ?>
然后,如果我们引用这个 "vars.php" 文件,就可以在调用文件中使用这些变量:
<html> <body> <h1>欢迎访问我的首页!</h1> <?php include 'vars.php'; echo "我有一辆" . $color . $car "。"; ?> </body> </html>
引入文件:
首先需要一个php文件:
<?php class shao//类名必须和文件名相同!!! { public $xxx="666"; } $shili = new shao(); echo $shili->xxx; ?>
引用:
<?php //引入文件 include "365jz.php";//引用文件;只能引用一遍 //引用多个则费劲 //include_once("365jz.php");//一次又一次 //也可以require ("365jz.php"); ?>
其中include与require的区别:
require:
执行到require()时,只会读取一次档案,故常放在程序开头,档案引入后PHP会将网页档重新编译,让引入档成为原先网页的一部分。
require() :无条件包含,如果文件不存在,会报出一个fatal error.脚本停止执行
require遇到错误时,直接报错并停止运行程序
include:
执行到include()时,每次皆会读取档案,故常用于流程控制的区段,如条件判断或循环中。
include() : 有条件包含,如果文件不存在,会给出一个 warning,但脚本会继续执行
include遇到错误时(引用的文件不存在),PHP只是报错,但程序会继续运行下去
以下为补充:
1. include有返回值,而require没有。
2. include()包括并运行指定文件 在处理失败时include() 产生一个警告,被导入的程序代码都会被执行,而且这些程序在执行的时候会拥有和源文件中呼叫到include()语句的位置相同的变量范围。你可以导入同一个服务器中的静态页面。
3. include_once()的作用和include()是几乎相同的 唯一的差别在于include_once()会先检查要导入的档案是不是已经在该程序中的其它地方被导入过了,如果有的话就不会再次重复导入(这项功能有时候是很重要的,比方说要导入的里面宣告了一些你自行定义好的函数,那么如果在同一个程序重复导入这个文件,在第二次导入的时候便会发生错误讯息,因为PHP不允许相同名称的函数被重复宣告第二次)。
4. require()会将目标文件的内容读入,并且把自己本身代换成这些读入的内容 在处理失败时require() 则导致一个致命错。 这个读入并且代换的动作是在PHP引擎编译你的程序代码的时候发生的,而不是发生在PHP引擎开始执行编译好的程序代码的时候(PHP 3.0引擎的工作方式是编译一行执行一行,但是到了PHP 4.0以后就有所改变了,PHP 4.0是先把整个程序代码全部编译完成后,再将这些编译好的程序代码一次执行完毕,在编译的过程中不会执行任何程序代码)。require()通常来导入静态的内容,而include()则适合用导入动态的程序代码。
5. 如同include_once(),require_once()会先检查目标文件的内容是不是在之前就已经导入过了,如果是的话,便不会再次重复导入同样的内容。
6. require是无条件包含也就是如果一个流程里加入require,无论条件成立与否都会先执行require。
7. require通常放在PHP程序的最前面,PHP程序在执行前,就会先读入require所指定引入的文件,使它变成PHP程序网页的一部份。常用的函数,亦可以这个方法将它引入网页中。
8. include一般是放在流程控制的处理部分中PHP程序网页在读到include的文件时,才将它读进来。这种方式可以把程序执行时的流程简单化。
推荐使用require_once()和include_once(),可以检测文件是否有重复包含。
自动加载:
被引用的php文件:
<?php class shao//类名必须和文件名相同!!! { public $xxx="666"; } ?>
自动加载:
<?php function __autoload($asd) { require $asd.".php";//可填地址查找 } $shili = new shao(); echo $shili->xxx; ?>
如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛