• require(),include(),require_once()和include_once()之间的区别


    require(),include(),require_once()和include_once()之间的区别

     

    引用文件的方法有两种:requireinclude

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

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

    _once 后缀表示已加载的不加载

    1.报错 include引入文件的时候,如果碰到错误,会给出提示,并继续运行下边的代码 require引入文件的时候,如果碰到错误,会给出提示,并停止运行下边的代码

    注:在 PHP 4.3.5 之前,包含文件中的语法错误不会导致程序停止,但从此版本之后会。

    2.条件引用

    include()与require()的功能相同,用法上却有一些不同,include()是有条件包含函数,而require()则是无条件包含函数, 例如下面例子,如果变量$somg为真,则将包含文件somefile.php:

    1
    2
    3
    if($some){<br>
      include 'somefile.php';
    }

    但无论$some取何值,下面的代码将把文件somefile.php包含进文件里:

    1
    2
    3
    if($something){
      require 'somefile.php';
    }

    下面的例子充分说明了这两个函数之间的不同

    1
    2
    3
    4
    5
    $i = 1;
    while ($i < 3) {
      require "somefile.$i.php";
      $i++;
    }

    可以从以上这段代码中看出,每一次循环的时候,程序都将把同一个文件包含进去,很显然这不我们想要的,可以看出这段代码希望在每次循环时, 将不同的文件包含进来,如果要完成这个功能,只能使用函数include()

    1
    2
    3
    4
    $i = 1;<br>while ($i < 3) {
      include "somefile.$i.php";
      $i++;
    }

    3.require用相对路径的时候

    当A引用B,而B又引用了其他文件C时,C的路径如果是相对路径,则是相对于A的路径,而不是相对于B的'

    4.require_once() 语句在脚本执行期间包括并运行指定文件。此行为和 require() 语句类似,唯一区别是如果该文件中的代码已经被包括了,则不会再次包括。

    include_once() 语句在脚本执行期间包括并运行指定文件。此行为和 include() 语句类似,唯一区别是如果该文件中的代码已经被包括了,则不会再次包括。如同此语句名字暗示的那样,只会包括一次。

    5..文件引用方式

    include有返回值,而require没有

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

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

  • 相关阅读:
    如何写出SpringBoot官方模样的Starter
    VS Code调试go语言程序
    redis 数据持久化,主从,哨兵等
    注解方式结合spring aop实现日志动态可插拔打印
    BeanUtils.copyProperties()的一个坑
    视频转换工具
    数库移表移行后如何对比数据呢
    XPS VIEWER FOR WIN10的安装方法
    增加注册表键值的命令
    .net web开发
  • 原文地址:https://www.cnblogs.com/wangli-66/p/5596070.html
Copyright © 2020-2023  润新知