通過Include與Require函數(shù)完成代碼重用
發(fā)表時(shí)間:2023-08-23 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]如果你做過各種大小的Web站點(diǎn),一定會對重用代碼段的重要性深有體會,不管是HTML還是PHP代碼塊。比如需要一年修改一次包含版權(quán)信息的頁腳,而你有1000個(gè)Web頁(就算是10個(gè)),手動操作則會讓你...
如果你做過各種大小的Web站點(diǎn),一定會對重用代碼段的重要性深有體會,不管是HTML還是PHP代碼塊。比如需要一年修改一次包含版權(quán)信息的頁腳,而你有1000個(gè)Web頁(就算是10個(gè)),手動操作則會讓你痛苦不已。
通過PHP,你可以使用不同函數(shù)幫助你重用代碼。具體用到的函數(shù)取決于你打算重用的內(nèi)容。
主函數(shù)如下:
* include() and include_once()
* require() and require_once()
include()函數(shù)包含給定的文件,并對其進(jìn)行檢查。如:
include('/home/me/myfile');
在所含文件中的任何代碼都將會在變量范圍之內(nèi)執(zhí)行,此范圍即等同于函數(shù)include()在父代碼中出現(xiàn)的地方。你可以通過組合使用include()和fopen()函數(shù)以包含服務(wù)器上的靜態(tài)文件或另一服務(wù)器上的目標(biāo)文件。
include_once()函數(shù)與include()函數(shù)完成相同的功能,僅檢查文件內(nèi)的代碼是否已經(jīng)被當(dāng)前腳本所包含過。如果代碼已經(jīng)被腳本所包含,該函數(shù)就不再包含相應(yīng)的文件了。
require()函數(shù)使用給定文件的內(nèi)容以替換自身。這一替換過程發(fā)生在PHP引擎編譯你的代碼時(shí)而非執(zhí)行階段,這與include()不同,后者首先被計(jì)算。require()函數(shù)更多的用于靜態(tài)元素,而include()函數(shù)則主要用于動態(tài)元素。和include_once()類似,require_once()函數(shù)檢查給定代碼是否早已經(jīng)插入到了文擋內(nèi),如果代碼已經(jīng)存在,給定代碼就不會被再次插入文檔。
建議對諸如版權(quán)、靜態(tài)文本和其他不含變量的元素這類信息采用require函數(shù),那些依賴其他腳本來實(shí)現(xiàn)自身內(nèi)容的元素也應(yīng)當(dāng)采用require函數(shù),例如:
<HTML>
<HEAD><TITLE>Something</TITLE></HEAD>
<BODY>
[a lot of content]
<?
//插入版權(quán)信息
require('/home/me/mycopyright');
?>
</BODY>
</HTML>
另一方面,常使用include()函數(shù)把函數(shù)庫或類似庫放到腳本之外:
<?
//獲取我的函數(shù)庫
include('/home/me/myfunctions');
// 使用我的函數(shù)執(zhí)行PHP程序?>
<HTML>
<HEAD><TITLE>Something</TITLE></HEAD>
<BODY>
[a lot of content]
</BODY>
</HTML>
下一個(gè)自然而然的問題是:“被included或者被required的文件都來自哪里呢?”簡單回答是:“你的系統(tǒng)。”不過,僅僅是一些代碼片段有時(shí)會包含了諸如含確定用戶名和密碼的數(shù)據(jù)庫連接之類的安全信息。顯然你不希望這些東西也成為文檔的一部分而被公之于眾。
你可以把包含文件(included或者required)放在系統(tǒng)的任何地方,只要用戶所處的PHP可以訪問這些文件即可。你還可以給這些文件以任何你希望的擴(kuò)展名,或者根本不設(shè)擴(kuò)展名。
使用include()和require()函數(shù)可以讓W(xué)eb站點(diǎn)上普遍存在或者經(jīng)常變動的元素具體化。而通過這一方式也會當(dāng)需要升級時(shí)使系統(tǒng)體系結(jié)構(gòu)更易于處理。