include和require都是一个将php导入到目前php文件中的一个函数,但是两个函数有区别。
两则的不同之处在于:
(1)include,每次获取,都要去对文件进行获取和评估,但是require,文件只处理一次,用文件中的内容将代替了require,所以说如果每次都去读取不同的代码的来说的话,include是比较有优势的,但是如果多次读取相同的代码来说的话,require的效率会比较高。
如果将require("1.php")放在PHP文件执行的最前面,在PHP文件执行之前,会先去将文件中的内容来代替require,而include则是需求的时候去读取。
总结一点而言:
include是用到时读取,
require是用之前读取,
_once是用到的文件如果相同,那么只获取一次
(2)两则在运行时候,如果遇到不存在的文件。
1 <?php 2 //r.php 3 $a = 1; 4 echo $a / 0; 5 ?>
1 <?php 2 //i.php 3 $b = 2; 4 echo $b / 0; 5 ?>
准备了两个php文件,一个是r.php,另外一个是i.php
首先验证require:
1 <?php 2 require "r.php"; 3 require "a.php"; 4 echo $a; 5 ?> 6 /* 7 8 Warning: Division by zero in C:xampphtdocs est .php on line 3 9 10 Warning: require(a.php): failed to open stream: No such file or directory in C:xampphtdocs estp.php on line 3 11 12 Fatal error: require(): Failed opening required 'a.php' (include_path='.;C:xamppphpPEAR') in C:xampphtdocs estp.php on line 3 13 */
不存在a.php所以,程序在此终止
接着验证下include:
1 <?php 2 include "r.php"; 3 include "a.php"; 4 echo $a; 5 ?> 6 /* 7 8 Warning: Division by zero in C:xampphtdocs est .php on line 3 9 10 Warning: include(a.php): failed to open stream: No such file or directory in C:xampphtdocs estp.php on line 3 11 12 Warning: include(): Failed opening 'a.php' for inclusion (include_path='.;C:xamppphpPEAR') in C:xampphtdocs estp.php on line 3 13 1 14 */
程序顺利运行,能够输出得到$a的结果,虽然没有能够找到对应文件
接着我们来验证下,require是否被文件中的内容代替(是否是无条件引用)
1 <?php 2 if(0){ 3 require "r.php"; 4 } 5 echo $a; 6 ?>
result:
1 Notice: Undefined variable: a in C:xampphtdocs estp.php on line 5
没有能够发现,所以是没有引用进来,我的PHP版本是PHP/5.5.1
学习地址: