PHP函数include include_once require和require_once的区别

php基础

浏览数:33

2019-9-9

功能介绍

  • include函数:会将指定的文件读入并且执行里面的程序;
  • require函数:会将目标文件的内容读入,并且把自己本身代换成这些读入的内容;
  • include_once 函数:在脚本执行期间包含并运行指定文件一次。如果该文件中已经被包含过,则不会再次包含和运行;
  • require_once 函数:和 require 语句完全相同,唯一区别是 PHP 会检查该文件是否已经被包含过,如果是则不会再次包含。

include 与 require 的区别

1.引入文件的方式不同

  • include 会读取指定文件,并执行里面的程序;
  • requrire 将目标文件内容替换自身;

2.当引入文件不存在时,处理行为不同

  • include 会产生一个警告,但脚本会继续运行;
  • requrire 会导致一个致命错误,并停止运行;

3.功能相似,执行的条件不同

  • include 在下面例子中,只有$val为真,才包含文件file;
if ($val) {
  include("file");
}
  • requrire 在下面例子中,不管$val真假,都会包含文件file;
if ($val) {
  require("file");
}

4.通常放置的位置不同

  • include 一般放在流程控制的处理部分,当执行到include时再读取文件,可将程序流程简单化;
  • requrire 一般放在PHP程序最前面,在程序代码执行前,先读取指定的文件,将其作为程序的一部分;

xxx 与 xxx_once 的区别

  • include 和 require 可包含并执行多次,如下 file 被包含并执行四次:
<? php
  require 'file';
  require 'file';
  include 'file';
  include 'file';
?>
  • include_once 和 require_once 在包含指定文件前,会先查询一遍已加载的文件列表,确认未包含过才进行包含并运行。如下 file1 和 file2 只会被包含并执行一次:
<? php
  include 'file1';
  include_once 'file1';
  require_once 'file2';
  require_once 'file2';
?>

xxx 与 xxx_once 的抉择

  • 通常 include_oncerequire_once 会有性能上的下降,因为需要查询是否包含过。但如果不在循环体内,性能影响不会太大。
  • 当启用 APC 时,尽量不要用include_once,因为apc.include_once_override配置项没有很好的被实现。
    注:Alternative PHP Cache (APC)是一种对PHP有效的开放源高速缓冲储存器工具,它能够缓存opcode的php中间码。

包含函数后加不加括号

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

作者:Franchen