浅谈include与require的区别
很多学PHP的人都会被 include、require、require_once、include_once 几个东西弄个头晕转向
书上的说法是 require 是预先载入的,不过细心的会发现,在程序中用 include 和 require 一个文件,其实并无区别
require_once 、 include_once 则是表示不重复载入某文件,含义是一样的,那么到底区别在那里呢?
下面说几个例子说明问题:
例一:在局部代码中,不管是include还是require其实都不会预加载代码的
如:
<?php
if(isset($aaa)) include("aaa.php");
(isset($aaa)) require("aaa.php");
echo 'ok';
?>
不管是否存在 aaa.php 上面的程序都是不会报错的,这说明在全部文件的局部作用域中 require 和 include 是一样的
下面定义文件 bbb.php
<?php
$bbb = 'I am bbb!';
?>
下面是引用bbb.php的程序
<?php
function test1(){
require("bbb.php");
echo "RQ".$bbb;
}
function test2(){
include("bbb.php");
echo "INC".$bbb;
}
test1();
test2();
?>
运行上述文件最终的结果是:RQ会报错或只输出RQ
INC会输出INC I am bbb
现在能分出 require 和 include 的区别了吧
就是说 require 不管放在那里,都会被当作全局的代码,而include里面的代码本身可以当作局部的代码
因此,如果你在函数或类里调用有定义全局变量的文件,应该用 include ,如果纯函数则两都都可以
如果不想弄乱程序结构,也可以在 bbb.php 中声明 global $bbb;
这样两者都一致了!