问: include和include_once都可以包含文件, 那么这两个函数有什么区别呢?
答: 1. 如果只是包含静态文件, 都可以包含, 而且会重复包含, 没有区别, 但是如果包含的文件中有函数就不一样了, 我们知道, 在PHP中, 函数名是不可以重名的, 那么我们看以下代码情况:
fun.php文件代码内容如下:
/**
* 打印函数
*/
function dump($str,$dump = false,$echo = true,$char = 'UTF-8')
{
@ob_start();
@header("Content-Type:text/html;charset=\"$char\"");
echo '<pre><div style="text-align:left;">';
if($dump)var_dump($str);else print_r($str);
echo '</div></pre>';
$out = ob_get_contents();
ob_end_clean();
if($echo)
{
echo $out;
}
else
{
return $out;
}
return NULL;
}
调用fun.php的文件a.php代码如下:
include("fun.php");
include("fun.php");
$citys = ["北京","上海","杭州","深圳"];
dump($citys);
//报错: Fatal error: Cannot redeclare dump()
//如果代码像下面这样, 重复加载fun.php文件, 那么就只会加载一次, 也就不会出错了
include_once("fun.php");
include_once("fun.php");
$citys = ["北京","上海","杭州","深圳"];
dump($citys);
总的来说: 当加载同一个文件时,include不会先进行检查错误, 然后遇到同名的函数就会报错, 而include_once会进行检查, 如果已经加载了同名函数, 那么便不再加载, 同理 require与require_once也是一样的区别用法
