首先include和require都是引入指定的文件。_once表示只引入一次,即之前已经引入过的不再引入。
nclude与require的区别
1、加载失败的处理方式不同
include与require除了在处理引入文件的方式不同外,最大的区别就是:
include在引入不存文件时产生一个警告且脚本还会继续执行,
require则会导致一个致命性错误且脚本停止执行。
<?php
include ‘hello.php’;
echo ‘world’;
?>
如果hello.php不存在,echo ‘world’这句是可以继续执行的。
<?php
require ‘hello.php’;
echo ‘world’;
?>
如果hello.php不存在,echo ‘hello’这句是不会执行的,到require时就停止了。
2、include()是有条件包含函数,而 require()则是无条件包含函数。
if(FALSE){
include ‘file.php’; //file.php不会被引入
}
if(FALSE){
require ‘file.php’; //file.php将会被引入
}
3、文件引用方式
include有返回值,而require没有
$retVal = include(’somefile.php’);
if(!empty($retVal)){
echo “文件包含成功”;
}else{
echo “文件包含失败”;
}
include()执行时需要引用的文件每次都要进行读取和评估,
require()执行时需要引用的文件只处理一次(实际上执行时需要引用的文件内容替换了require()语句)
可以看出若有包含这些指令之一的代码和可能执行多次的代码,则使用require()效率比较高,
若每次执行代码时相读取不同的文件或者有通过一组文件叠代的循环,就使用include(),
require通常使用方法,这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份。常用的函数,亦可以这个方法将它引入网页中。
include通常使用方法,这个函数一般是放在流程控制的处理部分中。PHP 程序网页在读到 include 的文件时,才将它读进来。这种方式,可以把程序执行时的流程简单化
另外关于include和require后面是否加括号的问题,
理论上来说:include和require后面加不加括号对执行结果没有区别,但是加上括号效率较低,所以后面能不加括号就不加括号。
1, require在程序解释执行前被加载,被加载的内容,在程序解释执行过程中被经常使用;include则是在解释执行过程中,需要使用某些内容使用,include加载;由此可见,某些内容经常使用,可以使用require;如果每次执行代码是读取不同的文件,或者有通过一组文件迭代的循环,就使用include。
2,include引入文件失败时候,警告,程序继续执行;require引入文件出错时候,错误,停止执行。
3,include_once和require_once与include和require类似,不过它们引入的文件只能被引用一次。
4,include与file_get_contents类似,但是include返回字符串可以被执行,file_get_contents得到字符串不会被执行。
实例
(1)include有条件引用;require是无条件引用。
if($some){
include ‘somefile.php’;
}
如上代码。如果变量$somg为真,则将包含文件somefile.php。
if($something){
require ‘somefile.php’;
}
如上代码,但无论$some取何值,下面的代码将把文件somefile.php包含进文件里。
(2) 迭代过程中引用不同文件时候
$i = 1;
while ($i < 3) {
require “somefile”.$i.”.php”;
$i++;
}
可以从以上这段代码中看出,每一次循环的时候,程序都将把同一个文件somefile1.php包含进去,很显然这不是我们想要的,可以看出这段代码希望在每次循环时,将不同的文件包含进来,如果要完成这个功能,只能使用include。
$i = 1;
while ($i < 3) {
include “somefile.$i.php”;
$i++;
}