一、文件的包含
Include / include_once
Require /require_once
include 和require都是把一个页面引入到当前页面.
怎么来理解"引入".
就相当于把被包含文件的所有代码,替换include/require那一句. 和直接把代码写在include那一句是一样的.
Require作用也是把一个文件引入到当前文件.
理解与include一样.
二、Include与require的区别
答:
1) 加载失败的处理方式不同
:
include**`如果引入的文件不存在`**,试图继续往下执行,报一个warning
(如果你不介意之前的内容是否被包含,之后的内容都要执行,就使用include)
require如果**`引入的文件不存在`**,报fatal error,不再继续执行.
(如果之前的内容一定要被包含,才允许继续执行之后的代码,就使用require)
2) 包含文件不存在或者语法错误的时候require是致命的,include不是。
3) include有返回值,而require没有(可能因为如此require的速度比include快)。
4) 引入时间不同
:
require通常使用方法,这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require
所指定引入的文件,使它变成 PHP 程序网页的一部份。常用的函数,亦可以这个方法将它引入网页中。include通常使用方法,这个函数一般是放在流程控制的处理部分中。PHP 程序网页在读到 include
的文件时,才将它读进来。这种方式,可以把程序执行时的流程简单化
三、Include/require 与 include_once /require_once的区别
_once 会自动判断文件是否已经引入,如果引入,不再重复执行.
即:保证被包含文件只可能被引入一次.
(如果包含的文件里有定义函数,那么被包含的文件只能被包含一次,如果多次包含,就会出现函数重定义的错误,php是不运行函数重定义的,会出现致命错误,之后代码不在运行)
有的文件不允许被包含多次?
可以用_once来控制,
但是,如果从文件的设计上,比较规范,能保证肯定不会出现多次包含的错误,
这种情况下 建议用include
因为include_once要检测之前有没有包含,效率没有include高
四、关于include和require后面是否加括号的问题
理论上来说:include和require后面加不加括号对执行结果没有区别,但是加上括号效率较低,所以后面能不加括号就不加括号。
面试题
try{
require_once "aaa";
print 'print';
}catch (Exception $e){
echo 'dddd';
}
include 语句包含并运行指定文件。
以下文档也适用于 require。
被包含文件先按参数给出的路径寻找,如果没有给出目录(只有文件名)时则按照 include_path 指定的目录寻找。如果在 include_path 下没找到该文件则 include 最后才在调用脚本文件所在的目录和当前工作目录下寻找。如果最后仍未找到文件则 include 结构会发出一条警告;这一点和 require 不同,后者会发出一个致命错误。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。