| 導購 | 订阅 | 在线投稿
分享
 
 
 

通過實例深入剖析require和include的用法

來源:互聯網  2008-12-22 08:08:10  評論

在php中,include和require的作用比較容易混淆。下面我以一個經典例子來深刻說明它們的區別。

當我們經常訪問一個數據庫時,可以把連庫語句寫成一個文件

con_db.php

<?php

$dbh = mysql_connect('localhost','','');

mysql_select_db('admreqs');

?>

在實際應用時,我們可以在程序中調用這個文件。

如require("con_db.php")或include("con_db.php)

這時,兩個函數的效果是差不多的。

但如果這樣用

filename.php

<?php

require("con_db.php")

function myfun($par1,$par2)

{包含對數據庫處理的語句}

.....

myfun($par1,$par2);

.....

myfun($p1,$p2);

?>

文件到myfun處將不能繼續執行,因爲函數裏無法得到外面的變量(include也是一樣的)。除非把$dbh作爲一個變量傳給函數。這又增加了調用函數的複雜度。

我們可以通過把require或include放在函數裏面來解決這個問題。

如果用include,文件的第一個函數調用處將順利通過,但第二個調用將無法執行,原因是不能在沒有關閉數據庫時在打開一次,也就是說,con_db.php執行了兩次。將include換成require,一切都正常。

也就是說,require類似于一次預掃描,在程序執行時,無論在函數裏或是函數外,都將先把require的文件執行,且只執行一次。而include則是每執行一次就調用一次文件,即這次執行後,下次再執行執行到這裏,仍將再執行一次。

因此,如果在一個循環中,某些語句你只想執行一次,那你用require包括它們就可以了。

在php中,include和require的作用比較容易混淆。下面我以一個經典例子來深刻說明它們的區別。 當我們經常訪問一個數據庫時,可以把連庫語句寫成一個文件 con_db.php <?php $dbh = mysql_connect('localhost','',''); mysql_select_db('admreqs'); ?> 在實際應用時,我們可以在程序中調用這個文件。 如require("con_db.php")或include("con_db.php) 這時,兩個函數的效果是差不多的。 但如果這樣用 filename.php <?php require("con_db.php") function myfun($par1,$par2) {包含對數據庫處理的語句} ..... myfun($par1,$par2); ..... myfun($p1,$p2); ?>   文件到myfun處將不能繼續執行,因爲函數裏無法得到外面的變量(include也是一樣的)。除非把$dbh作爲一個變量傳給函數。這又增加了調用函數的複雜度。   我們可以通過把require或include放在函數裏面來解決這個問題。   如果用include,文件的第一個函數調用處將順利通過,但第二個調用將無法執行,原因是不能在沒有關閉數據庫時在打開一次,也就是說,con_db.php執行了兩次。將include換成require,一切都正常。   也就是說,require類似于一次預掃描,在程序執行時,無論在函數裏或是函數外,都將先把require的文件執行,且只執行一次。而include則是每執行一次就調用一次文件,即這次執行後,下次再執行執行到這裏,仍將再執行一次。 因此,如果在一個循環中,某些語句你只想執行一次,那你用require包括它們就可以了。
󰈣󰈤
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
王朝網路微信公眾號
微信掃碼關註本站公眾號 wangchaonetcn
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有