問: include和include_once都可以包含文件, 那么這兩個函數(shù)有什么區(qū)別呢?
答: 1. 如果只是包含靜態(tài)文件, 都可以包含, 而且會重復包含, 沒有區(qū)別, 但是如果包含的文件中有函數(shù)就不一樣了, 我們知道, 在PHP中, 函數(shù)名是不可以重名的, 那么我們看以下代碼情況:
fun.php文件代碼內容如下:
/** * 打印函數(shù) */ 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不會先進行檢查錯誤, 然后遇到同名的函數(shù)就會報錯, 而include_once會進行檢查, 如果已經加載了同名函數(shù), 那么便不再加載, 同理 require與require_once也是一樣的區(qū)別用法