PHP面试题:include,include_once,require和require_once函数有什么区别?

2021-07-2709:37:19网站建设与开发Comments1,744 views字数 1601阅读模式

include、include_once、requirerequire_once这4个函数:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/21583.html

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

1 include与require的区别

include与require除了在处理引入文件的方式不同外,最大的区别就是:include在引入不存文件时产生一个警告且脚本还会继续执行,而require则会导致一个致命性错误且脚本停止执行。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/21583.html


  include '';
  echo '123';
?>

如果文件不存在,echo '123'这句是可以继续执行的.文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/21583.html

你看到的可能是类似下边的情况:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/21583.html

PHP面试题:include,include_once,require和require_once函数有什么区别?文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/21583.html


require '';
echo '123';
?>

如果文件不存在,echo '123'这句是不执行的,在require时就停止了。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/21583.html

你看到的可能是类似下边的情况:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/21583.html

PHP面试题:include,include_once,require和require_once函数有什么区别?文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/21583.html

include()与require()的功能相同,但在用法上却有一些不同,include()是有条件包含函数,而 require()则是无条件包含函数。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/21583.html

例如在下面的一个例子中,如果变量$somgthing为真,则将包含文件somefile:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/21583.html

if($something){
include("somefile");
}

但不管$something取何值,下面的代码将把文件somefile包含进文件里:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/21583.html

if($something){
require("somefile");
}

2 include与include_once的区别(require与require_once的区别)

include_once (require_once)语句在脚本执行期间包含并运行指定文件。此行为和 include (require)语句类似,区别是如果该文件中的代码已经被包含了,则不会再次包含,只会包含一次。include_once(require_once)需要查询一遍已加载的文件列表, 确认是否存在, 然后再加载。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/21583.html


require '';
require '';
?>

这种情况下被包含两次。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/21583.html


require '';
require_once '';
?>

这种情况下,第二次包含时,是不会进行包含的。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/21583.html

3 include(require)与include_once(require_once)的抉择问题

通常:include_once和require_once会有性能上的下降,因为他需要判断之前是否包含过。一般情况下,也不太需要去考虑,除非这已经影响到你程序的性能了。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/21583.html

如果使用 APC 尽量也不要用include_once,因为配置项没有很好的被实现(详情百度)。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/21583.html

注1:Alternative PHP Cache (APC)是一种对PHP有效的开放源高速缓冲储存器工具,它能够缓存opcode的php中间码。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/21583.html

require通常使用方法,这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份。常用的函数,亦可以这个方法将它引入网页中。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/21583.html

include通常使用方法,这个函数一般是放在流程控制的处理部分中。PHP 程序网页在读到 include 的文件时,才将它读进来。这种方式,可以把程序执行时的流程简单化。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/21583.html

return 在返回引用的时候加上括号不但效率低而且会造成逻辑错误。那么这几个函数呢?文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/21583.html

理论上来说:include和require后面加不加括号对执行结果没有区别,但是加上括号效率较低,所以后面能不加括号就不加括号。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/21583.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/cms/21583.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定