功能介绍
- 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_once
和require_once
会有性能上的下降,因为需要查询是否包含过。但如果不在循环体内,性能影响不会太大。 - 当启用 APC 时,尽量不要用include_once,因为apc.include_once_override配置项没有很好的被实现。
注:Alternative PHP Cache (APC)是一种对PHP有效的开放源高速缓冲储存器工具,它能够缓存opcode的php中间码。
包含函数后加不加括号
理论上来说:include和require后面加不加括号对执行结果没有区别,但是加上括号效率较低,所以后面能不加括号就不加括号。