一、文件的包含

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';

}

clipboard.png

include 语句包含并运行指定文件。

以下文档也适用于 require。

被包含文件先按参数给出的路径寻找,如果没有给出目录(只有文件名)时则按照 include_path 指定的目录寻找。如果在 include_path 下没找到该文件则 include 最后才在调用脚本文件所在的目录和当前工作目录下寻找。如果最后仍未找到文件则 include 结构会发出一条警告;这一点和 require 不同,后者会发出一个致命错误。


Bohr
6.5k 声望3.3k 粉丝

引用和评论

0 条评论