zoukankan      html  css  js  c++  java
  • php 中 include 与 require 的区别

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

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

     


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

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

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

    1.在性能方面

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

    eg:

     1 <pre name="code" class="php">$startTime=time();
     2 $startMemoryUsed=memory_get_usage();  
     3 require "a1.inc";
     4 $endMemoryUsed=memory_get_usage();
     5 $endTime=time();
     6 $usedMemory=($endMemoryUsed-$startMemoryUsed)/1024; 
     7 print_r($usedMemory);//1.6171875
     8 echo '</br>';
     9 print_r($endTime-$startTime);
    10 /*$startTime=time();
    11 $startMemoryUsed=memory_get_usage();  
    12 include "a1.inc";
    13 $endMemoryUsed=memory_get_usage();  
    14 $endTime=time();
    15 $usedMemory=($endMemoryUsed-$startMemoryUsed)/1024; 
    16 print_r($usedMemory);//1.6171875
    17 print_r($endTime-$startTime);*/
    View Code

    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

    1 $name="lidquan";
    2 class Teacher{
    3     public function show(){
    4         echo 'my job is teacher</br>';
    5     }
    6 }
    7 function showName(){
    8     echo 'a2.inc 里面的方法';
    9 }
    View Code


    文件 index.php

     1 function a(){
     2     require "a2.inc";
     3     $teacher =new Teacher();
     4     $teacher->show();
     5 }
     6  
     7 a();//正常调用
     8  
     9 showName();//正常调用
    10  
    11 var_dump($name);//提示$name没有定义
    View Code

    结果截图如下:


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

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

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

  • 相关阅读:
    2019年11月4日随堂测试 最多输入字母统计
    写增删改查中间遇到的问题
    2019年12月9日下午自习成果
    2019年12月16日 分级考试
    2019年11月18日 JAVA期中考试 增删改查
    sql语言积累
    【转载】Java项目中常用的异常处理情况总结
    泛型
    C#数字格式化输出
    委托,Lambda的几种用法
  • 原文地址:https://www.cnblogs.com/geloutingyu/p/9429273.html
Copyright © 2011-2022 走看看