明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

require與include經(jīng)典一例拋析

[摘要]在php中,include和require的作用比較容易混淆。下面我以一個經(jīng)典例子來深刻說明它們的區(qū)別。當我們經(jīng)常訪問一個數(shù)據(jù)庫時,可以把連庫語句寫成一個文件con_db.php3<?phpdbh =mysql_connect('localhost','',&...
在php中,include和require的作用比較容易混淆。下面我以一個經(jīng)典例子來深刻說明它們的區(qū)別。
當我們經(jīng)常訪問一個數(shù)據(jù)庫時,可以把連庫語句寫成一個文件
con_db.php3
<?php
$dbh =mysql_connect('localhost','','');
mysql_select_db('admreqs');
?>
在實際應(yīng)用時,我們可以在程序中調(diào)用這個文件。
如require("con_db.php3")或include("con_db.php3)
這時,兩個函數(shù)的效果是差不多的。
但如果這樣用
filename.php3
<?php
require("con_db.php3")
function myfun($par1,$par2)
{包含對數(shù)據(jù)庫處理的語句}
.....
myfun($par1,$par2);
.....
myfun($p1,$p2);
?>
文件到myfun處將不能繼續(xù)執(zhí)行,因為函數(shù)里無法得到外面的變量(include也是一樣的)。除非把$dbh作為一個變量傳給函數(shù)。這又增加了調(diào)用函數(shù)的復(fù)雜度。
我們可以通過把require或include放在函數(shù)里面來解決這個問題。
如果用include,文件的第一個函數(shù)調(diào)用處將順利通過,但第二個調(diào)用將無法執(zhí)行,原因是不能在沒有關(guān)閉數(shù)據(jù)庫時在打開一次,也就是說,con_db.php3執(zhí)行了兩次。將include換成require,一切都正常。
也就是說,require類似于一次預(yù)掃描,在程序執(zhí)行時,無論在函數(shù)里或是函數(shù)外,都將先把require的文件執(zhí)行,且只執(zhí)行一次。而include則是每執(zhí)行一次就調(diào)用一次文件,即這次執(zhí)行后,下次再執(zhí)行執(zhí)行到這里,仍將再執(zhí)行一次。
因此,如果在一個循環(huán)中,某些語句你只想執(zhí)行一次,那你用require包括它們就可以了。