PHP包含文件函数include、include_once、require、require_once区别总结
例如下面的代码:
echo"includetestfinal!";//include报错,但是会继续执行,显示:includetestfinal!
require("hello.php");
echo"requiretestfinal!";//require报错,停止代码的执行。
一句话总结:
1.include()产生一个警告
2.require() 则导致一个致命错误
换句话说,如果你想在丢失文件时停止处理页面,那就别犹豫了,用 require() 吧。include() 就不是这样,脚本会继续运行。同时也要确认设置了合适的include_path。
就是说再解析程序时即读取require的文件,而不是解析后,如果不能读取到被require的文件,就不能进行下一步动作。所以,不被正确包含就会导致程序的文件,用require比较好。可能效率上也略微高点。
注意:require()无论如何都会包含文件,而include()可以有选择地包含:
<?php
if(FALSE){
require("x.php");
}
if(FALSE){
include("s.php");
}
?>
上面的代码中:x.php 一定会被包含,而 s.php 一定不会被包含。
二种方式提供不同的使用弹性:
require的使用方法如require("MyRequireFile.php");。这个函式通常放在PHP程式的最前面,PHP程式在执行前,就会先读入require所指定引入的档案,使它变成PHP程式网页的一部份。
include使用方法如include("MyIncludeFile.php");。这个函式一般是放在流程控制的处理区段中。PHP程式网页在读到include的档案时,才将它读进来。这种方式,可以把程式执行时的流程简单化。
一、使用语法和简介
1、include()
语法:include(/path/to/filename)
include()语句将在其被调用的位置处包含一个文件。包含一个文件与在该语句所在位置复制制定文件的数据具有相同内容的效果。
使用include()时可以忽略括号。
可以根据条件来执行include()语句。在条件语句中使用include()有个怪现象,它必须包围在语句块大括号中,或者用其他语句包围符括起来。
2、include_once()
语法:include_once(filename)
include_once()语句在脚本执行期间包含并运行指定文件。此行为和include()语句类似,唯一区别是include_once()会先判断一下这个文件在之前是否已经被包含过,如已经包含,则忽略本次包含。
include_once()应该用于嵌套包含的情况下,想确保它只被包含一次以避免函数重定义,变量重新赋值等问题。
小结:include_once()函数的作用与include相同,不过它会首先验证是否已经包含了该文件。如果已经包含,则不再执行include_once。否则,则必须包含该文件。除了这一点与include完全相同。
3、require()
语法:require(filename)
require()在很大程度上与include相同,都是将一个模板文件包含到require调用坐在的位置。
require和include之间有两点重要的区别。首先,无论require的位置如何,制定文件都将包含到出现require的脚本中。例如,即使require放在计算结果为假的if语句中,依然会包含指定文件。
第二个重要的区别是:require出错时,脚本将停止运行,而在使用include的情况下,脚本将继续执行。
4、require_once()
语法:require_once(filename)
require_once()语句在脚本执行期间包含并运行指定文件。此行为和require()语句类似,唯一区别是require_once()会先判断一下这个文件在之前是否已经被包含过,如已经包含,则忽略本次包含。
require_once()应该用于嵌套包含的情况下,想确保它只被包含一次以避免函数重定义,变量重新赋值等问题。
小结:随着网站越来越大,可能会出现重复包含某些文件。这也许不是问题,但又是修改了所包含文件的变量后,却由于后面再次包含原来的文件而被覆盖,可能不希望出现这种情况。还可能出现另一个问题,即所包含文件中函数名的冲突。使用require_once就可以解决这些问题。
require_once函数确保文件只包含一次。在遇到require_once后,后面再试图包含相同的文件时将被忽略。
二、区别总结
1、include()与require()语句区别。
两者区别:这两种结构除了在如何处理失败之外完全一样。
include()产生一个警告,脚本会继续运行。
require()则导致一个致命错误,脚本会停止运行。
换句话说,如果想在遇到丢失文件或遇到错误时停止处理页面就用require()。如果想在遇到错误时继续处理页面就用include()。
注意在PHP4.3.5之前,包含文件中的语法错误不会导致程序停止,但从此版本之后会。
2、include_once()、require_once()与include()、require()的区别
include_once()和require_once()一样,应该用于在脚本执行期间同一个文件有可能被包含超过一次的情况下,想确保它只被包含一次以避免函数重定义,变量重新赋值等问题。这就是include_once()和require_once()与include()和require()的主要区别。
三、需要注意的问题
1.路径问题
特别是嵌套包含的时候,一定得注意包含文件的路径。
比如A文件包含了B文件,B文件包含了C文件,A,B,C文件都不在同一个文件夹下,这个时候往往很容易出错误。
解决方案:可以使用dirname(__FILE__)语句,这句的意思是获得当前脚本的绝对路径。如:require_once(dirname(__FILE__)."/config.php");
2.效率问题
include_once(),require_once(),与include(),require()比较,效率要低一些,因为他们至少得先判断一下这个文件是否已包含。这一问题在PHP5版本有很大改进,不过效率还是有差别。
相关文章
- 的应用利用PHP中MySQL函数实现功能强大的数据库操作(php中mysql函数)
- PHP命令执行php文件需要注意的问题详解编程语言
- PHP与MySQL的紧密链接(php与mysql的关系)
- PHP操作MySQL数据库,实现强大的数据功能(php调用mysql数据库)
- 使用Linux运行PHP脚本:完美实现(linux执行php脚本)
- 函数Linux下禁用PHP函数的步骤(linux关闭php)
- PHP在Linux下安装配置指南(php搭建环境linux)
- Linux上PHP重装教程(linux重装php)
- 如何在PHP中启用MSSQL数据库连接(php开启mssql)
- PHP可以连接MSSQL数据库吗?(php能连接mssql吗)
- PHP连接MSSQL服务器:一篇实战指南(php 用mssql连接)
- Linux平台如何高效搜索PHP文件(linux搜索php)
- Linux持续更新:升级PHP版本的魅力(linux升级php版本)
- 混合开发助力企业信息化C语言PHP和MySQL联动提升系统性能(c php mysql)
- 使用php重新实现PHP脚本引擎内置函数
- PHP删除一个目录及目录下的所有文件的函数代码
- 《PHP编程最快明白》第五讲:php目录、文件操作
- php中批量修改文件后缀名的函数代码
- PHP备份数据库生成SQL文件并下载的函数代码
- PHP基于文件头的文件类型验证类函数
- 使用PHP遍历文件目录与清除目录中文件的实现详解
- PHP获取和操作配置文件php.ini的几个函数介绍
- 如何使用PHP批量去除文件UTF8BOM信息
- 自己写了一个php检测文件编码的函数
- PHP获取指定函数定义在哪个文件中以及其所在的行号实例
- PHP移动文件指针ftell()、fseek()、rewind()函数总结
- PHP打开和关闭文件操作函数总结
- 配置php.ini实现PHP文件上传功能
- 推荐10个提供免费PHP脚本下载的网站
- PHP中使用glob函数实现一句话删除某个目录下的所有文件
- php递归删除目录与文件的方法
- PHP采用自定义函数实现遍历目录下所有文件的方法