以下内容转自:https://blog.csdn.net/hsd2012/article/details/51089785

网上太多关于php中include与require区别。其实说的都是经不起验证的。随意找了一个截图如下:

还信誓旦旦的解释:include()是有条件包含函数,而require()则是无条件包含函数。

但是这是很久之前的事了,现在的php,require与include确实有区别,笔者测试的是5.3以上版本测试结果如下:

发现这两种结构除了在性能和在如何处理包含失败之外,其他完全一样。

1.在性能方面

测试发现当require与include在性能方面差别不大,觉得这方面可以不用考虑(可能是我测试的样例不够多吧)

eg:

 <pre name="code" class="php">$startTime=time();
$startMemoryUsed=memory_get_usage();
require "a1.inc";
$endMemoryUsed=memory_get_usage();
$endTime=time();
$usedMemory=($endMemoryUsed-$startMemoryUsed)/1024;
print_r($usedMemory);//1.6171875
echo '</br>';
print_r($endTime-$startTime);
/*$startTime=time();
$startMemoryUsed=memory_get_usage();
include "a1.inc";
$endMemoryUsed=memory_get_usage();
$endTime=time();
$usedMemory=($endMemoryUsed-$startMemoryUsed)/1024;
print_r($usedMemory);//1.6171875
print_r($endTime-$startTime);*/

2.在包含错误处理方面

在包含失败 时,include()产生一个警告并继续执行,而require()则导致一个致命错误。换句话说,如果想在遇到丢失文件时停止处理页面就用 require(),否则就用include()。

  1. include "a9.inc";//<span style="font-family: Arial, Helvetica, sans-serif;">a9.inc不存在会产生一个警告</span>
  2.  
  3. require "a10.inc";//a10.inc不存在会产生一个致命错误

补充:include,require包含作用域

文件a2.inc

 $name="lidquan";
class Teacher{
public function show(){
echo 'my job is teacher</br>';
}
}
function showName(){
echo 'a2.inc 里面的方法';
}

文件 index.php

 function a(){
require "a2.inc";
$teacher =new Teacher();
$teacher->show();
} a();//正常调用 showName();//正常调用 var_dump($name);//提示$name没有定义

结果截图如下:


关于包含文件后作用域问题总结如下:

1.所有在被包含文件中定义的函数和类在被包含后,在包含文件里都具有全局作用域

2.被包含文件的变量的作用域,随着包含位置的变化而变化。比如如果是在函数中包含,被包含文件的变量是局部变量

php 中 include 与 require 的区别的更多相关文章

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

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

  2. PHP中include和require的区别

    include和require的区别,其实两者没有太大的区别,如果要包含的文件不存在,include提示notice,然后继续执行下面的语句,require提示致命错误并且退出. 根据测试,win32 ...

  3. PHP 中 include 和 require 的区别详解

    require() 语句的性能与 include() 相类似,都是包括并运行指定文件.除了处理失败的方式不同之外.require 在出错时产生 E_COMPILE_ERROR 级别的错误,终止脚本运行 ...

  4. PHP中include和require的区别详解

    1.概要 require()语句的性能与include()相类似,都是包括并运行指定文件.不同之处在于:对include()语句来说,在执行文件时每次都要进行读取和评估:而对于require()来说, ...

  5. 2016/3/27 PHP中include和require的区别详解

    1.概要 require()语句的性能与include()相类似,都是包括并运行指定文件.不同之处在于:对include()语句来说,在执行文件时每次都要进行读取和评估:而对于require()来说, ...

  6. PHP中include()与require()的区别说明

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

  7. PHP中include()与require()的区别

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

  8. php中include和require的区别(整理)

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

  9. PHP 中 include() 与 require() 的区别说明

    引用文件的方法有两种:require 及 include.两种方式提供不同的使用弹性. require 的使用方法如 require("MyRequireFile.php"); . ...

随机推荐

  1. nodejs中的util.inspect.js

    util.inspect(object,[showHidden],[depth],[colors])是一个将任意对象转换 为字符串的方法,通常用于调试和错误输出.它至少接受一个参数 object,即要 ...

  2. Python Twisted系列教程4:由Twisted支持的诗歌客户端

    作者:dave@http://krondo.com/twisted-poetry/  译者:杨晓伟(采用意译) 你可以在这里从头开始阅读这个系列. 第一个twisted支持的诗歌服务器 尽管Twist ...

  3. leetcode696

    本题先寻找字符串中0变1,或者1变0的位置作为分隔位置.然后从这个分隔位置同时向左.右两侧搜索. 找到的左连续串和右连续串,都进行累计. public class Solution { public ...

  4. java将类和函数封装成jar

    本来想用idea安装的,不过用maven生成后发现jar有20,30M肯定不对,后来还是用eclipse生成了,方便很多 环境: eclipse luna,jdk1.8_112 1.生成jar包,首先 ...

  5. json转字符串 —— jsonObj.toJSONString()与JSON.stringify(jsonObj)

    ar people = { "programmers": [{ "firstName": "Brett", "lastName&q ...

  6. oracle语言基础

    一.语言分类 1.DML(Data Manipulation Language,数据操作语言):用于对数据的操作. DML包括:(1)SELECT:查询数据 select * from temp;   ...

  7. CentOS7 启动docker.service失败(code=exited, status=1/FAILURE)

    启动报错 Job for docker.service failed because the control process exited with error code. See "sys ...

  8. mysql数据库中插入表情4个字节的

    这个问题,原因是UTF-8编码有可能是两个.三个.四个字节.Emoji表情或者某些特殊字符是4个字节,而Mysql的utf8编码最多3个字节,所以数据插不进去. 我的解决方案是这样的 1.在mysql ...

  9. spring框架 事务 xml配置方式

    user=LF password=LF jdbcUrl=jdbc:oracle:thin:@localhost:1521:orcl driverClass=oracle.jdbc.driver.Ora ...

  10. Date3.19

    1.正则表达式的定义及使用2.Date类的用法3.Calendar类的用法========================================================1正则表达式的 ...