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

【1】include和require都是语句结构(并不是函数)!!!

在php官网手册上是划分到了流程控制,这两个语句结构不是函数。

详情可参考http://php.net/manual/zh/function.include.php

所以,它可以不加圆括号,直接加引号来包含文件。我习惯不加圆括号。

 include '01_var.php';
或者
include('01_var.php');
或者
require '01_var.php';
或者
require('01_var.php');

2】对于处理失败的方式不同(最主要的区别)

对于引入的文件找不到情况下。(这里确保当前文件夹下面不存在no.php)

在01_include_require文件下编写如下代码:

include 'no.php';
echo 'End!';//会输出

  

include 生成一个警告(E_WARNING),在错误发生后脚本会继续执行。

 require 'no.php';
2 echo 'End!';//不会输出

require 生成一个致命错误(E_COMPILE_ERROR),在错误发生后脚本会停止执行。

【3】对include和require引入文件的实质

对 include() 语句来说,在执行文件时每次都要进行读取和评估;
对于 require() 来说,文件只处理一次(实际上,文件内容替换 require() 语句)这就意味着如果可能执行多次的代码,则使用 require() 效率比较高。
另外一方面,如果每次执行代码时是读取不同的文件,或者有通过一组文件迭代的循环,就使用 include() 语句。

【4】include_once和require_once的作用

使用方法与不加后缀一样,加上_once后缀 意味着如果该文件中的代码已经被包括进来了,就不会再次包括。因为有些情况下,在脚本执行期间,同一个文件有可能包含超过一次的情况下,为了确保只包含一次,避免函数重定义,或者是变量的重新赋值的问题。

【5】使用场景

[1]如果您希望继续执行,并向用户输出结果,即使包含文件已丢失,那么请使用 include。

[2]在框架复杂的 php 应用程序编程中,请始终使用 require 向执行流引用关键文件。这有助于提高应用程序的安全性和完整性,在某个关键文件意外丢失的情况下。包含文件省去了大量的工作。例如在thinkphp框架index入口引入核心代码就是利用require引入的。

[3]require通常放在php脚本程序最前面,php再执行程序前,就会先读取require语句引入的文件,使之成为php脚本文件的一部分。

[4]include 通常用在流程控制的处理部分中,php 脚本在读到 include 的文件时,才将它读进来。这种方式,可以把程序执行时的流程简单化。

总结:

1. require, include 遇到错误时处理不同,require出错时,脚本将停止运行,而在使用include的情况下,脚本将继续执行;

2. 无论require的位置如何,制定文件都将包含到出现require的脚本中。例如,即使require放在计算结果为假的if语句中,依然会包含指定文件。所以使用条件包含时,需要用include;

3. 带有后缀 _once ,功能和不带后缀的相同。

  include_once()函数的作用与include相同,不过它会首先验证是否已经包含了该文件。如果已经包含,则不再执行include_once。否则,则必须包含该文件。除了这一点与include完全相同。

  require_once函数确保文件只包含一次。在遇到require_once后,后面再试图包含相同的文件时将被忽略。(随着网站越来越大,可能会出现重复包含某些文件。这也许不是问题,但又是修改了所包含文件的变量后,却由于后面再次包含原来的文件而被覆盖,可能不希望出现这种情况。还可能出现另一个问题,即所包含文件中函数名的冲突。使用require_once就可以解决这些问题。)

PHP 中 include 和 require 的区别详解的更多相关文章

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

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

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

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

  3. 基于python中staticmethod和classmethod的区别(详解)

    例子 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 class A(object):   def foo(self,x):     print "executing foo ...

  4. DOS批处理中%cd%与%~dp0的区别详解

    转载:https://www.jb51.net/article/105325.htm DOS批处理中%cd%与%~dp0的区别详解     Windows下批处理中%cd%和%~dp0都能用来表示当前 ...

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

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

  6. php 中 include 与 require 的区别

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

  7. PHP中include和require的区别

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

  8. C#中struct和class的区别详解

    本文详细分析了C#中struct和class的区别,对于C#初学者来说是有必要加以了解并掌握的. 简单来说,struct是值类型,创建一个struct类型的实例被分配在栈上.class是引用类型,创建 ...

  9. Java中的==和equals的区别详解

    1.基础知识 (1)String x = "hello"; (2)String x = new String ("hello"); 第1种方式的工作机制是,首先 ...

随机推荐

  1. 关于 array of const

    之前应该参考一下: 关于开放数组参数 //这是在 System 单元定义的一组标识数据类型的常量: vtInteger    = ; vtBoolean    = ; vtChar      = ; ...

  2. leetcode 380. Insert Delete GetRandom O(1) 、381. Insert Delete GetRandom O(1) - Duplicates allowed

    380. Insert Delete GetRandom O(1) 实现插入.删除.获得随机数功能,且时间复杂度都在O(1).实际上在插入.删除两个功能中都包含了查找功能,当然查找也必须是O(1). ...

  3. flutter FloatingActionButton组件

    import 'package:flutter/material.dart'; class FloatingActionButtonDemo extends StatelessWidget { @ov ...

  4. python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图

    python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图 # coding=utf-8 from openpyxl import load_workbook ...

  5. 修改jar包内容并打包上传到私服

    第一步:拉下git分支中代码,进行修改,修改后commit——>push 第二步:在IDEA中Terminal中执行命令进行打包到本地mvn clean package 第三步:上传到私服,方法 ...

  6. Fiddler抓包显示请求时延

    两种方式:配置和加代码.配置只是将隐藏的时延字段显现了出来,格式没法改:加代码就随你写了,格式自己说了算. 先说配置的,在左边框顶部字段名称右击鼠标 -> 点击Customize colums. ...

  7. django项目mysite

    项目建立 建立项目mysite 各文件和目录解释: 外层的mysite/目录与Django无关,只是你项目的容器,可以任意重命名. manage.py:一个命令行工具,用于与Django进行不同方式的 ...

  8. Spring MVC 数据转换和格式化

    HttpMessageConverter和JSON消息转换器 HttpMessageConverter是定义从HTTP接受请求信息和应答给用户的 HttpMessageConverter是一个比较广的 ...

  9. 容器版Jenkins官方镜像 本身自带了 Java

    docker版Jenkins官方镜像 本身自带了 Java

  10. Data - 深入浅出学统计 - 下篇

    本文是已读书籍的内容摘要,少部分有轻微改动,但不影响原文表达. :以漫画形式来讲解最基本的统计概念和方法. ISBN: 9787121299636 https://book.douban.com/su ...