zoukankan      html  css  js  c++  java
  • 【php】include、include_once、require、require_once的区别【转】

    首先要说的是,include、include_once、require、require_once的核心功能都是一样的,都是相当于把目标网页的代码生硬地直接复制过来。

    基本上,如果不从性能上考虑,使用include、include_once、require、require_once都可以达到基本的效果。基本上爱怎么用就怎么用。

    其中的微小差别如下:

    例如1.php中有句简单的打印语句:

    <?php 
    echo "1";
    ?>
    

    下面的程序运行的结果:

    <?php
    include '1.php';
    require '1.php';
     
    include_once '1.php';
    require_once '1.php';
    ?>
    

    为2个1,而不是4个1,因为include和require都是引入指定的文件,_once表示只引入一次,即之前已经引入过的不再引入。

    如果写成:

    <?php
    include_once '1.php';
    require_once '1.php';
    include '1.php';
    require '1.php';
    ?>
    

    结果将是4个1。
    值得注意的是,_once虽然表示之前已经引入过的不再引入,但这个语句不会检查所引入的网页中的代码是否相同,比如有两个代码一模一样的网页untitled.html与untitled1.html皆为:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    </head>
     
    <body>
    </body>
    </html>
    

    如果有以下的语句:

    <?php
    include_once 'untitled.html';
    include_once 'untitled1.html';
    ?>
    

    出来的结果是这样的:

    看到相同的部分出现两次。_once只是通过文件名来判断之前已经引入过是否再引入。

    因此_once并不能防止不同名却同一个资源多次引入的现象。

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

    比如a.php如果不存在,以下的代码,依旧会输出b:

    <?php
    include 'a.php';
    echo 'b';
    ?>
    

    而:

    <?php
    require 'a.php';
    echo 'b';
    ?>
    

    则不会。
    同时还有如下的区别:

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

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

    include有返回值,而require没有

    $retVal = include(’somefile.php’);
    if(!empty($retVal)){
      echo “文件包含成功”;
    }else{
      echo “文件包含失败”;
    }
    

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

    require通常使用方法,这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份。常用的函数,亦可以这个方法将它引入网页中。include通常使用方法,这个函数一般是放在流程控制的处理部分中。PHP 程序网页在读到 include 的文件时,才将它读进来。这种方式,可以把程序执行时的流程简单化。

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

    文章来自:https://blog.csdn.net/yongh701/article/details/47972483

  • 相关阅读:
    windows下cmd清屏命令cls
    mac电脑复制粘贴使用command+c command+v
    Git从远程仓库里拉取一条本地不存在的分支方法
    react系列笔记1 用npx npm命令创建react app
    golang学习笔记10 beego api 用jwt验证auth2 token 获取解码信息
    golang学习笔记9 beego nginx 部署 nginx 反向代理 golang web
    golang学习笔记8 beego参数配置 打包linux命令
    获取某一天所在周的开始日期和结束日期
    某一日期所在月份的天数
    获取某一日期所在月份的第一天日期或最后一天日期
  • 原文地址:https://www.cnblogs.com/KillBugMe/p/12410079.html
Copyright © 2011-2022 走看看