include和require的区别

 1、include() 包含文件
2、include_once(filename)如果已经包含,则不再执行include_once
3、requirerequire和include之间有两点重要的区别。require出错时,脚本将停止运行,而在使用include的情况下,脚本将继续执行。
4、require_once(filename)require_once函数确保文件只包含一次。在遇到require_once后,后面再试图包含相同的文件时将被忽略。
 
 
 
include和require的区别
 准备在一个PHP的开源程序上做点二次开发,借此机会想对PHP进行一下系统的学习。曾经也大概的了解过一点PHP,但因为工作中一直没有用到这门语言,所以慢慢也放下了。走了这么久的弯路才明白,项目驱动是最好的学习方式。只有当你需要用到一门语言的时候,去学习它才会有比较好的效果,而且也不容易忘记。

在二次开发之前得先了解一下原先程序的整个结构,在看源码的过程中发现有大量的引入语句,记得之前就对PHP中的include和require的区别一直很含糊,不能再用这样的态度对学习,因此特地停下来了解一下PHP和include和require的联系和区别。

首先include和require都是引入指定的文件。_once表示只引入一次,即之前已经引入过的不再引入。

例如1.php中有句简单的打印 echo '1 </br> ' 下面的程序运行的结果:

  1. <?php
  2. include '1.php';
  3. require '1.php';
  4. include_once '1.php';
  5. require_once '1.php';

将是

1

1
而不是
1

1

1

1

如果将_once引入的语句放在include和require上面,结果将是

1

1

1

1

include与require的区别

1、加载失败的处理方式不同

include与require除了在处理引入文件的方式不同外,最大的区别就是:
include在引入不存文件时产生一个警告且脚本还会继续执行,
require则会导致一个致命性错误且脚本停止执行。

  1. <?php
  2. include 'hello.php';
  3. echo 'world';
  4. ?>

如果hello.php不存在,echo ‘world’这句是可以继续执行的。

  1. <?php
  2. require 'hello.php';
  3. echo 'world';
  4. ?>

如果hello.php不存在,echo ‘hello’这句是不会执行的,到require时就停止了。

2、include()是有条件包含函数,而 require()则是无条件包含函数。

  1. if(FALSE){
  2. include 'file.php'; //file.php不会被引入
  3. }
  4. if(FALSE){
  5. require 'file.php'; //file.php将会被引入

3、文件引用方式

include有返回值,而require没有

  1. $retVal = include(’somefile.php’);
  2. if(!empty($retVal)){
  3. echo "文件包含成功";
  4. }else{
  5. echo "文件包含失败";
  6. }

include()执行时需要引用的文件每次都要进行读取和评估,
require()执行时需要引用的文件只处理一次(实际上执行时需要引用的文件内容替换了require()语句)

可以看出若有包含这些指令之一的代码和可能执行多次的代码,则使用require()效率比较高,
若每次执行代码时相读取不同的文件或者有通过一组文件叠代的循环,就使用include(),

require通常使用方法,这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份。常用的函数,亦可以这个方法将它引入网页中。

include通常使用方法,这个函数一般是放在流程控制的处理部分中。PHP 程序网页在读到 include 的文件时,才将它读进来。这种方式,可以把程序执行时的流程简单化

另外关于include和require后面是否加括号的问题,

理论上来说:include和require后面加不加括号对执行结果没有区别,但是加上括号效率较低,所以后面能不加括号就不加括号。

include 和require 区别的更多相关文章

  1. include和require区别

    1.  include()执行的时候需要引用的文件每次都要进行读取评估; require()执行时需要引用的文件只处理一次(实际上执行时需要引用的文件内容替换了require()语句) 可以看出若有包 ...

  2. PHP include 与 require 区别

    include 与 require 语句同样用于向 PHP 代码中引用文件. include 与 require 有一个巨大的差异:  include 语句引用某个文件并且 PHP 无法找到它,脚本会 ...

  3. PHP include和require 区别

    require 的使用方法如 require("MyRequireFile.php"); .这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require ...

  4. php 中 include 与 require 的区别

    以下内容转自:https://blog.csdn.net/hsd2012/article/details/51089785 网上太多关于php中include与require区别.其实说的都是经不起验 ...

  5. php中include()和require()的区别

    1.引用文件方式 对 include()来说,在include()执行时文件每次都要进行读取和评估:而对于require()来说,文件只处理一次(实际上,文件内容替换 了require()语句.这就意 ...

  6. php部分---include()与require()的区别、empty()与isset is_null的区别与用法详解

    include()与require()的用途是完全一样的,不一定非得哪个放在最前面哪个放在中间.他们最根本的区别在于错误处理的方式不一样. 1.处理错误的方式: require()一个文件存在错误的话 ...

  7. PHP include()和require()方法的区别

    本文总结了PHP的include()和require()两种包含外部文件的方法的不同之处.基本上就是,加载失败的处理方法,性能,以及使用弹性方面的不同. PHP的include()和require() ...

  8. 转:PHP include()和require()方法的区别

    文章来自于:http://developer.51cto.com/art/200909/153687.htm 本文总结了PHP的include()和require()两种包含外部文件的方法的不同之处. ...

  9. include 和 require 的区别

    1. 首先不去介绍大家都知道的区别,百度上都进行了详细的说明,对于返回值的方面大家都很少提到. include 和 require 还有一个区别就是是否具有返回值.参见手册 对include 加载文件 ...

随机推荐

  1. 团队项目—Beta版本冲刺3

    博客介绍 这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/GeographicInformationScience 这个作业要求在哪里 https://w ...

  2. 双指针,BFS和图论(二)

    (一)BFS 1.地牢大师 你现在被困在一个三维地牢中,需要找到最快脱离的出路! 地牢由若干个单位立方体组成,其中部分不含岩石障碍可以直接通过,部分包含岩石障碍无法通过. 向北,向南,向东,向西,向上 ...

  3. 用 F# 手写 TypeScript 转 C# 类型绑定生成器

    前言 我们经常会遇到这样的事情:有时候我们找到了一个库,但是这个库是用 TypeScript 写的,但是我们想在 C# 调用,于是我们需要设法将原来的 TypeScript 类型声明翻译成 C# 的代 ...

  4. c/python 的区别

    c             python                                                                                ...

  5. Shell环境变量文件

    /etc/profile 系统级的初始化环境变量文件,由登录Shell调用执行 /etc/profile.d 当/etc/profile运行时,会调用该目录下的一些脚本 /etc/bashrc 每个交 ...

  6. python写的用WMI检测windows系统信息的脚本

    脚本如下: #!/usr/bin/env python #coding:utf- import wmi import sys,time,platform def get_system_info(os) ...

  7. LR中解决接口请求中包含中文字符,服务器不识别的问题

    在LR中,直接写的接口请求,如果请求字段包含中文字段,服务器会不识别,这个时候就要用到lr_convert_string_encoding这个函数: 具体用法: lr_convert_string_e ...

  8. BeetleX.AdminUI介绍

    BeetleX.AdminUI是基于Beetlexjs+Vuejs+Bootstrap相结合的后台管理框架,主要介绍在不使用Webpack的情况下,如何用VS来开发一个单页面的Web后台管理应用.如果 ...

  9. C++不同类中的特征标相同的同名函数

    转载请注明出处,版权归作者所有 lyzaily@126.com yanzhong.lee        作者按:                   从这篇文章中,我们主要会认识到一下几点:      ...

  10. Codeforces 1060C Maximum Subrectangle(子矩阵+预处理)

    题意:给出数组a,b,组成矩阵c,其中$c_{ij}=a_i*b_j$,找出最的大子矩阵,使得矩阵元素和<=x,求这个矩阵的size n,m<=2000 思路:对于子矩阵(l1...r1) ...