php中include和require的区别详解
2016-06-20 21:13
239 查看
require()语句的性能与include()相类似,都是包括并运行指定文件。不同之处在于:对include()语句来说,在执行文件时每次都要进行读取和评估;而对于require()来说,文件只处理一次(实际上,文件内容替换require()语句)。这就意味着如果可能执行多次的代码,则使用require()效率比较高。另外一方面,如果每次执行代码时是读取不同的文件,或者有通过一组文件迭代的循环,就使用include()语句。
require的使用方法如:require("myfile.php"),这个语句通常放在PHP脚本程序的最前面。PHP程序在执行前,就会先读入require()语句所引入的文件,使它变成PHP脚本文件的一部分。include使用方法和require一样如:include("myfile.php"),而这个语句一般是放在流程控制的处理区段中。PHP脚本文件在读到include()语句时,才将它包含的文件读取进来。这种方式,可以把程式执行时的流程简单化。
incluce在用到时加载
require在一开始就加载
_once后缀表示已加载的不加载
PHP系统在加载PHP程序时有一个伪编译过程,可使程序运行速度加快。但incluce的文档仍为解释执行。include的文件中出错了,主程序继续往下执行,require的文件出错了,主程序也停了,所以包含的文件出错对系统影响不大的话(如界面文件)就用include,否则用require。
require()和include()语句是语言结构,不是真正的函数,可以像php中其他的语言结构一样,例如echo()可以使用echo("ab")形式,也可以使用echo "abc"形式输出字符串abc。require()和include()语句也可以不加圆括号而直接加参数。
include_once()和require_once()语句也是在脚本执行期间包括运行指定文件。此行为和include()语句及require()类似,使用方法也一样。唯一区别是如果该文件中的代码已经被包括了,则不会再次包括。这两个语句应该用于在脚本执行期间,同一个文件有可能被包括超过一次的情况下,确保它只被包括一次,以避免函数重定义以及变量重新赋值等问题。
![](http://img.blog.csdn.net/20160620211504092?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
include引入文件的时候,如果碰到错误,会给出提示,并继续运行下边的代码。
require引入文件的时候,如果碰到错误,会给出提示,并停止运行下边的代码。
用例子来说话,写两个php文件,名字为test-include.php和test-require.php,注意相同的目录中,不要存在一个名字是test-nothing.php的文件。
![](http://img.blog.csdn.net/20160620211622069?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
浏览http://localhost/test-include.php,因为没有找到test-nothing.php文件,我们看到了报错信息,同时,报错信息的下边显示了abc,你看到的可能是类似下边的情况:
![](http://img.blog.csdn.net/20160620211805377?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
浏览http://localhost/test-require.php,因为没有找到test-nothing.php文件,我们看到了报错信息,但是,报错信息的下边没有显示abc,你看到的可能是类似下边的情况:
![](http://img.blog.csdn.net/20160620211856347?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20160620212203540?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
include()与require()的功能相同,用法上却有一些不同,include()是有条件包含函数,而require()则是无条件包含函数。
例如下面例子,如果变量$somg为真,则将包含文件somefile.php:
if($some){
include 'somefile.php';
}
但无论$some取何值,下面的代码将把文件somefile.php包含进文件里:
if($something){
require 'somefile.php';
}
下面的例子充分说明了这两个函数之间的不同:
$i = 1;
while ($i < 3) {
require "somefile.$i.php";
$i++;
}
可以从以上这段代码中看出,每一次循环的时候,程序都将把同一个文件包含进去,很显然这不是我们想要的,可以看出这段代码希望在每次循环时,将不同的文件包含进来,如果要完成这个功能,只能使用函数include():
$i = 1;
while ($i < 3) {
include "somefile.$i.php";
$i++;
}
require的使用方法如:require("myfile.php"),这个语句通常放在PHP脚本程序的最前面。PHP程序在执行前,就会先读入require()语句所引入的文件,使它变成PHP脚本文件的一部分。include使用方法和require一样如:include("myfile.php"),而这个语句一般是放在流程控制的处理区段中。PHP脚本文件在读到include()语句时,才将它包含的文件读取进来。这种方式,可以把程式执行时的流程简单化。
incluce在用到时加载
require在一开始就加载
_once后缀表示已加载的不加载
PHP系统在加载PHP程序时有一个伪编译过程,可使程序运行速度加快。但incluce的文档仍为解释执行。include的文件中出错了,主程序继续往下执行,require的文件出错了,主程序也停了,所以包含的文件出错对系统影响不大的话(如界面文件)就用include,否则用require。
require()和include()语句是语言结构,不是真正的函数,可以像php中其他的语言结构一样,例如echo()可以使用echo("ab")形式,也可以使用echo "abc"形式输出字符串abc。require()和include()语句也可以不加圆括号而直接加参数。
include_once()和require_once()语句也是在脚本执行期间包括运行指定文件。此行为和include()语句及require()类似,使用方法也一样。唯一区别是如果该文件中的代码已经被包括了,则不会再次包括。这两个语句应该用于在脚本执行期间,同一个文件有可能被包括超过一次的情况下,确保它只被包括一次,以避免函数重定义以及变量重新赋值等问题。
include引入文件的时候,如果碰到错误,会给出提示,并继续运行下边的代码。
require引入文件的时候,如果碰到错误,会给出提示,并停止运行下边的代码。
用例子来说话,写两个php文件,名字为test-include.php和test-require.php,注意相同的目录中,不要存在一个名字是test-nothing.php的文件。
浏览http://localhost/test-include.php,因为没有找到test-nothing.php文件,我们看到了报错信息,同时,报错信息的下边显示了abc,你看到的可能是类似下边的情况:
浏览http://localhost/test-require.php,因为没有找到test-nothing.php文件,我们看到了报错信息,但是,报错信息的下边没有显示abc,你看到的可能是类似下边的情况:
include()与require()的功能相同,用法上却有一些不同,include()是有条件包含函数,而require()则是无条件包含函数。
例如下面例子,如果变量$somg为真,则将包含文件somefile.php:
if($some){
include 'somefile.php';
}
但无论$some取何值,下面的代码将把文件somefile.php包含进文件里:
if($something){
require 'somefile.php';
}
下面的例子充分说明了这两个函数之间的不同:
$i = 1;
while ($i < 3) {
require "somefile.$i.php";
$i++;
}
可以从以上这段代码中看出,每一次循环的时候,程序都将把同一个文件包含进去,很显然这不是我们想要的,可以看出这段代码希望在每次循环时,将不同的文件包含进来,如果要完成这个功能,只能使用函数include():
$i = 1;
while ($i < 3) {
include "somefile.$i.php";
$i++;
}
2.3 文件引用方式
include()执行时需要引用的文件每次都要进行读取和评估,require()执行时需要引用的文件只处理一次(实际上执行时需要引用的文件内容替换了require()语句)可以看出若有包含这些指令之一的代码和可能执行多次的代码,则使用require()效率比较高,若每次执行代码时相读取不同的文件或者有通过一组文件叠代的循环,就使用include(),可以给想要包括的文件名设置变量,当参数为 include()时使用这个变量。相关文章推荐
- mybatis_user_guide(7) SQL语句构建器类
- mybatis_user_guide(6) Java API
- UI控件之显示图像控件ImageView(下)
- 在一般处理文件中访问Session需要添加IRequiresSessionState
- JavaSE学习55:GUI编程之布局管理器
- SQuirrel 连不上 Phoenix Hbase ---> 可能是因为zookeeper 集群中的一个zookeeper 启动有问题
- Oblivious transfer and Garbled circuits
- Google Bookmarks API Guide
- iOS开发UI篇—UITabBarController简单介绍
- ios UISearchDisplayController 实现 UITableView 搜索功能 UISearchDisplayController 是苹果专为 UITableView 搜索封装
- Easyui的DateBox日期格式化
- HTML滚动文字代码 marquee标签
- Android Studio里面的Build.gradle的详细配置说明
- ThreadPoolExecutor使用和思考(上)-线程池大小设置与BlockingQueue的三种实现区别
- qt 使用多个ui文件
- 百度UEditor添加视频 增加支持“通用代码”功能,支持微信
- STL之deque
- 解决升级到最新版cocoaPods出现file was built for archive which is not the architecture being linked (x86_64)的问题
- java生成32位的UUID通用唯一识别码 (Universally Unique Identifier)
- java String、String.concat和StringBuilder性能对比