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

引入PHP包含文件 重用PHP程序代碼

[摘要]當(dāng)頁(yè)面中再三重復(fù)用到同樣的內(nèi)容時(shí),用include()函數(shù)包含文件,這個(gè)方法可以簡(jiǎn)化編碼工作。例如,關(guān)聯(lián)相同的數(shù)據(jù)庫(kù);在頁(yè)面的頁(yè)眉或頁(yè)腳顯示相同的HTML。類似的應(yīng)用不勝枚舉。那么如何來應(yīng)用呢?&l...
當(dāng)頁(yè)面中再三重復(fù)用到同樣的內(nèi)容時(shí),用include()函數(shù)包含文件,這個(gè)方法可以簡(jiǎn)化編碼工作。例如,關(guān)聯(lián)相同的數(shù)據(jù)庫(kù);在頁(yè)面的頁(yè)眉或頁(yè)腳顯示相同的HTML。類似的應(yīng)用不勝枚舉。那么如何來應(yīng)用呢?

<html>
<body>
<?php
include ("example.inc");
?>
</body>
</html>

現(xiàn)在來看一下,在“example.inc”文件中,如果加入如下的代碼:

<?php
$hello = "Hello World";
echo $hello;
?>

就和把它們?nèi)恐苯訉懙角懊娴拇a中一樣。唯一要注意的是必須把PHP分隔符(上述代碼的首行和末行)也加入被包含的文件中,否則這些代碼僅僅在那里顯示而不被執(zhí)行。實(shí)際上可以指定任何包含文件的名字,用.inc文件名是為了來把它們和其他PHP腳本中分隔開。也可以用下面方法實(shí)現(xiàn),

<?php
require ("example.inc");
?>

這和上面的include()函數(shù)包含有什么區(qū)別呢?如果用require()函數(shù)包含的文件不存在,那么當(dāng)運(yùn)行腳本時(shí)程序就停止運(yùn)行并給出錯(cuò)誤信息。如果是用include包含的話,則顯示一條警告,仍繼續(xù)執(zhí)行腳本。在我們下面的例子中,就是一個(gè)可能出現(xiàn)錯(cuò)誤例子。用include()函數(shù)包含時(shí)候出現(xiàn)如下錯(cuò)誤提示:

Warning: Failed opening 'hello.inc' for inclusion (include_path='') in /tutorial/9.php on line 6

如果用require()函數(shù)包含文件,可能出現(xiàn)以下錯(cuò)誤信息:

Fatal error: Failed opening required 'hello.inc' (include_path='') in /tutorial/9.php on line 6

看到里邊的細(xì)微差別了嗎?用require包含文件的話,給出了一個(gè)“嚴(yán)重錯(cuò)誤;而用include()函數(shù)包含文件只給出一個(gè)“警告”。

用包含文件唯一的問題是是否在包含文件中保存了密碼。既然當(dāng)連接數(shù)據(jù)庫(kù)時(shí),PostgreSQL 不用密碼(至少本例中不用),那這個(gè)問題就不重要了。在以后的例子中,我們會(huì)用一個(gè)文件來包含所有信息。

[補(bǔ)充--by Boban]
1). 兩者的區(qū)別是,require()函數(shù)包含進(jìn)來的內(nèi)容是作為整個(gè)文檔的一個(gè)組成,而include()函數(shù)則不是。在一個(gè)正確的PHP程序中,使用require()函數(shù)的時(shí)候,如果包含進(jìn)來的文件語(yǔ)法或者其他錯(cuò)誤,則整個(gè)文檔的PHP腳本都不再運(yùn)行;如果使用include()函數(shù)包含的時(shí)候,程序只在有語(yǔ)法錯(cuò)誤的地方提示錯(cuò)誤,而PHP腳本的其他正確的部分繼續(xù)運(yùn)行。
2). include()函數(shù)可以使用在條件語(yǔ)句、循環(huán)控制語(yǔ)句中,例如if(1==1),來判斷是否需要包含該文件,而require()函數(shù)將忽略這些條件,不管3721統(tǒng)統(tǒng)包含進(jìn)來。
3). 如果包含文件中定義了變量、函數(shù)、類等,最好使用include()函數(shù),并且做一個(gè)宏定義,例如if(!define("_EXAMPLE_INC")) define("_EXAMPLE_INC",1);語(yǔ)句防止重復(fù)包含而導(dǎo)致錯(cuò)誤。