实例说明include_once与include的区别?

时间:2016-12-05 22:10:08 类型:PHP
字号:    

问:  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也是一样的区别用法