PHP中include和required区别是什么?

作者&投稿:龚亲 (若有异议请与网页底部的电邮联系)
php中include和require有什么区别。~

平常是没区别的.
当要加载的文件不存在时候, include会给一个warning警告, 然后继续运行. 而require则会给一个fatal error, 直接结束脚本

require 的使用方法如 require("MyRequireFile.php"); 。这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份。常用的函数,亦可以这个方法将它引入网页中。
include 使用方法如 include("MyIncludeFile.php"); 。这个函数一般是放在流程控制的处理部分中。PHP 程序网页在读到 include 的文件时,才将它读进来。这种方式,可以把程序执行时的流程简单化。
他们两个的用途是完全一样的,不一定非得哪个放在最前面哪个放在中间。他们最根本的区别在于错误处理的方式不一样。
require一个文件存在错误的话,那么程序就会中断执行了,并显示致命错误
include一个文件存在错误的话,那么程序不会中端,而是继续执行,并显示一个警告错误。
以下为补充:
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()语句的功能与include()相类似,都是包括并运行指定文件。不同之处在于:对include()语句来说,在执行文件时每次都要进行读取和评估;而对于require()来说,文件只处理一次(实际上,文件内容替换require()语句)。这就意味着如果可能执行多次的代码,则使用require()效率比较高。另外一方面,如果每次执行代码时是读取不同的文件,或者有通过一组文件迭代的循环,就使用include()语句。

详细区别:

区别一、

include引入文件的时候,如果碰到错误,会给出提示,并继续运行下边的代码。

require引入文件的时候,如果碰到错误,会给出提示,并停止运行下边的代码。

区别二、

用法上却有一些不同,include()是有条件包含函数,而require()则是无条件包含函数。例如

if($something){
  require 'somefile.php';
}

这段代码中不论$something取何值,somefile.php都会被包含近文件,而如果使用include,则只有$something为真的时候才会包含文件somefile.php。

区别三、

include()执行时需要引用的文件每次都要进行读取和评估,require()执行时需要引用的文件只处理一次(实际上执行时需要引用的文件内容替换了require()语句)可以看出若有包含这些指令之一的代码和可能执行多次的代码,则使用require()效率比较高,若每次执行代码时相读取不同的文件或者有通过一组文件叠代的循环,就使用include(),可以给想要包括的文件名设置变量,当参数为 include()时使用这个变量。



include 是比较松一点的“包含”,如:文件不存在也不什么出现问题,程序还可以往下执行。

required是比较严格“包含”,如:文件不存在或无权限访问时,程序马上抛出错并中止。

一、require()所在位置的语句不被执行,require()所包含的文件中的语句也不会被执行。 二、require()语句的功能完全适用于include()语句。下边介绍require()语句所没有的include()语句的功能和特点。 include语句只有在被执行时才会读入要包含的文件。
.require()语句 使用require()和include()语句时要特别的注意。那就是在被包含的文件中,处理器是按照html模式来解释其中的内容的,处理完被包含的内容后又恢复到php模式。所以如果需要在被包含文件中使用php语法,就要使用正确的php开始和结束标记来把这些语句包含进去。
require()和include()知识php中的一种语言特性,而不是函数。它们和函数有许多不同的地方。
比如:require()所包含的文件中不能包含控制结构,而且不能使用return这样的语句。在require()所包含的文件中使用return语句会产生处理错误。
不象include()语句,require()语句会无条件地读取它所包含的文件的内容,而不管这些语句是否执行。所以如果你想按照不同的条件包含不同的文件,就必须使用include()语句。当然,如果require()所在位置的语句不被执行,require()所包含的文件中的语句也不会被执行。
require()不能在循环体中根据条件的不同而包含不同的文件。require()语句只会在第一次执行时调用它所包含的文件中的内容替换本身这条语句,当再次被执行时只能执行第一次所包含的语句。但是include()语句可以在循环体中来包含不同的文件。
require()语句中的变量继承require()语句所在位置的变量作用域。所有在require()语句的位置可以访问的变量,在require()语句所包含的文件中都可以访问。如果require()语句位于一个函数内部,那么被包含文件内的语句都相当于定义在函数内部。
require()语句在PHP程序执行前就会将使用require引用的文件读入,因此require通常放到程序的开始处。因此要特别注意一点,require语句有一点强,不管程序是否真的需要引用的文件,只要你使用require语句,它都会把他们包含进来!即使你是在条件控制语句中使用这个函数进行包含,那怕是那个条件不为真,引用文件也会被包含进来!形成了僵尸,在运行过程中这些僵尸是不起任何可见作用的,但是很明显它会加重负担,所以这一点要特别注意!如果使用require语句发生了包含错误,那么程序将输出出错信息并停止运行!!

如果require()语句通过声明文件的URL来包含远程文件,而且远程服务器按照php代码来解释该文件的话,本地php文件中所包含的内容是在远程服务器上处理以后的结果。例如:

本来在php3.0中,require()所包含的文件可以使用return语句,但条件是return语句不能出现在{}内部,而必须出现在被包含文件的全局范围内。在php4.0中已经取消了require()的这个功能,但是仍然可以使用include()来实现。
2.include()语句 include()语句和require()语句有许多相同的地方。凡是在上边require()语句中没有明确说明不能适用于include()的部分外,require()语句的功能完全适用于include()语句。下边介绍require()语句所没有的include()语句的功能和特点。
include语句只有在被执行时才会读入要包含的文件。在错误处理方便,使用include语句,如果发生包含错误,程序将跳过include语句,虽然会显示错误信息但是程序还是会继续执行!
php处理器会在每次遇到include()语句时,对它进行重新处理,所以可以根据不同情况的,在条件控制语句和循环语句中使用include()来包含不同的文件。
例如:

在php3.0和php4.0中include()语句所包含的文件中都可以使用return语句来返回一个值,并停止执行被包含文件下面的内容。但php3.0和php4.0在处理这样的情况时有所不同。在php3.0中return语句不能包含在{}内,除非它在一个函数中,因为这时它表示函数的返回值而不是文件的返回值。而在php4.0中就没有了这样的限制,用户甚至可以在文件中返回一个数字,就象函数的返回值一样。这样的语句在
php3.0中通常会报告错误。以下举例说明: 假设被包含的文件为test.inc和主文件main.php位于一个目录中。

在php5.0中的输出结果也是: Before the return
Back in main.html

在php3.0中的输出结果是: Before the return
27Back in main.html

Parse error:parse error in /apache/htdocs/phptest/main.html on line 5
出现上面的错误是因为return语句位于{}内部而且不是一个函数内部。如果把{}去掉,使它位于test.inc的最外层,输出结果是: Before the return
27Back in main.html
之所以出现27,是因为在php3.0中不支持include()返回。


C++问题 fatal error C1020: unexpected #endif
endif 是防止你的当前include文件夹有过相同名字的头文件 一般写头文件是按如下格式 #ifndef 你要写的头文件名字 (要大写,而且.换成_,例如:#ifndef MYCLASS_H) #define 你要写的头文件名字 (要大写,而且.换成_,例如:#ifndef MYCLASS_H) ... #endif 3条语句必须同时写上或者干脆不用,...

C++如何将对象保存到文件中?
ofstream outfile("test.txt",ios::binary); outfile.write((char *)t,sizeof(t)); outfile.close(); ifstream infile("test.txt",ios::binary); infile.read((char *)&t,sizeof(t)); \/\/去掉上面一句中的 & 号即可.改为 \/\/infile.read((char *)t,sizeof(t)); inf...

惠普打印机驱动解压到哪?
临时中止、但是C盘空间仍然少了很多。请问惠普打印机驱动解压到哪里?怎样可以删除?谢谢。 慬...苦等2小时: 那些框架include那么多文件会不会影响性能 回答 苦等2小时: 啥时候能来个猎魔笔记的攻略

如何建立针对arm-linux的交叉编译环境
因而设置system type为SA11X0,SA11X0 Implementations中选择Compaq iPAQ H3600\/H3700。配置完成之后,需要将内核头文件拷贝到安装目录: cp -dR include\/asm-arm $PREFIX\/arm-linux\/include\/asm cp -dR include\/linux $PREFIX\/arm-linux\/include\/linux 四、第一次编译gcc 首先运行configure文件,使用...

ug二次开发怎么把不同数据写在一起
如果是大量的数据,可以采用KF,如果数据小,可以采用属性的方式。与表达时候相关的部分函数:UF_MODL_ask_exp。UF_MODL_ask_exp_desc_of_feat。UF_MODL_ask_exp_desc_of_frec。UF_MODL_ask_exp_tag_string。UF_MODL_ask_exp_tag_value。UF_MODL_ask_exps_of_feature。UF_MODL_ask_exps...

C语言如何生成UTF-8编码格式的文件
下面的Unix下函数可以会帮到你 getenv(取得环境变量内容)相关函数 putenv,setenv,unsetenv 表头文件 #include<stdlib.h> 定义函数 char * getenv(const char *name);函数说明 getenv()用来取得参数name环境变量的内容。参数name为环境变量的名称,如果该变量存在则会返回指向该内容的指针。环境...

C++课 没听··· 不懂··· 关于什么类啊 对象的~求详细解释_百度知 ...
\/\/修改后的程序如下:include <iostream> using namespace std;class stud { public: \/\/增加public 定义,VS2010在未使用此定义时默认为 private void setscore(int sc);void inscore();void getscore();int score;};stud s;int main(){ s.setscore(0); \/\/ 增加 s. , 调用 s 的...

VC++创建窗口不显示
同学你应该注意到,CreateWindow的第一个参数是类名,也就是要和你在wndclass.lpszClassName = "wootao system";中指定的"wootao system"一模一样,第二个参数是窗口名,随便取了,但是我建议你为了编码规范最好不要使用类似于"NULL"之类的窗口名。第二个问题,ShowWindow (hWnd, nCmdShow);只是一...

请教,惠普G4怎么拆屏,屏幕摔了。想自己换
您可以通过以下网址查询距离最近的惠普金牌服务中心: http:\/\/www8.hp.com\/cn\/zh\/support-drivers\/esupport\/ascpps.html 希望以上回复能够对您有所帮助。...苦等46分钟: 那些框架include那么多文件会不会影响性能 回答 苦等52分钟: 芦苇运球有点不稳是不是心态不太好 回答 苦等1小时: 女生分发朋友圈第六感...

求C语言程序,高手请进...
输入一个字符串s,再输入一个字符c,将字符串s中出现的所有字符c删除。要求定义并调用函数delchar(s,c),它的功能是将字符串中的出现的所有c字符删除 输入输出示例 Input a string: happy new year Input a char: a After deleted, the string is: hppy new yer*\/ \/*#include <stdio.h> i...

莆田市19873301070: PHP中include和require的区别详解 -
帅涛复方: 1.include与require的区别 require 的使用方法如 require("MyRequireFile.php"); .这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份.常用的函数,亦可以这个...

莆田市19873301070: PHP中include和required区别是什么? -
帅涛复方:require()语句的功能与include()相类似,都是包括并运行指定文件.不同之处在于:对include()语句来说,在执行文件时每次都要进行读取和评估;而对于require()来说,文件只处理一次(实际上,文件内容替换require()...

莆田市19873301070: php中require和include的区别 -
帅涛复方: HP的include()和require()是两种包含外部文件的方法,二者的区别如下:1:加载失败的处理方式不同:include()会产生一个警告,而require()则导致一个致命的错误(出现错误,脚本停止执行)require() :如果文件不存在,会报...

莆田市19873301070: php中include和require有什么区别 -
帅涛复方: 平常是没区别的.当要加载的文件不存在时候, include会给一个warning警告, 然后继续运行. 而require则会给一个fatal error, 直接结束脚本

莆田市19873301070: [php]require 和include -
帅涛复方: 简单说一下 require和include,前者当包含的文件不存在时,程序停止执行,后者当包含的文件不存在时只是报一个警告,程序继续执行.require和require_once,这两个区别为,前者遇到即包含文件,后者会判断是否已经包含过了,如果包含...

莆田市19873301070: php中include和require有什么区别?
帅涛复方:天南给你解说下:@在PHP中是抑制符,用来抑制错误信息输出; include 或 include_once 包含文件,如果文件包含失败,则向页面输出错误信息,然后继续执行后续代码; 而require 或 require_once 包含文件,当文件包含失败时,向页面输出错误信息,并停止当前页面的解析; 所以严格意义上讲,当我们要包含文件时,请使用 require 或 require_once

莆田市19873301070: php 中 include 和 require 的区别? -
帅涛复方: 这两种结构除了在如何处理失败之外完全一样.include() 产生一个警告而 require() 则导致一个致命错误.换句话说,如果你想在遇到丢失文件时停止处理页面就用 require().include() 就不是这样,脚本会继续运行.我记得我在黑马程序员社区刷面试题的时候刷到过这个题.如果有类似的问题,基本上都可以到社区找到答案,板块很清晰,上面也会有同道中人大家一起讨论.气氛很好

莆田市19873301070: php使用include和require的却别? -
帅涛复方: inlcude包含文件时有条件的,require无条件,如果文件不存在,或者出错,include只是warning一个警告,而require是致命的错误.

莆田市19873301070: php使用include 和require引入文件的区别 -
帅涛复方: require一个文件存在错误的话,那么程序就会中断执行了,并显示致命错误 include一个文件存在错误的话,那么程序不会中端,而是继续执行,并显示一个警告错误. 以下为补充:1. include有返回值,而require没有.2. include()包括并运行...

莆田市19873301070: php 中include()与require()的对比~呢? -
帅涛复方: include遇到错误和文件不存在,不会报错,程序可以继续执行.require遇到文件不存在,会报错找不到文件,程序终止.

你可能想看的相关专题

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网