PHP腳本的10個(gè)技巧(轉(zhuǎn)自ZDNet) --包含文件
發(fā)表時(shí)間:2023-07-30 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]包含文件如果你目前著手的Web站點(diǎn)開發(fā)項(xiàng)目規(guī)模較大,那你對(duì)代碼重用必定深有體會(huì),比方說,不管是HTML還是PHP代碼塊,只要項(xiàng)目足夠大,比如有1000個(gè)Web頁,你即便是一年只修改一次包含版權(quán)信息的...
包含文件
如果你目前著手的Web站點(diǎn)開發(fā)項(xiàng)目規(guī)模較大,那你對(duì)代碼重用必定深有體會(huì),比方說,不管是HTML還是PHP代碼塊,只要項(xiàng)目足夠大,比如有1000個(gè)Web頁,你即便是一年只修改一次包含版權(quán)信息的頁腳也會(huì)讓你痛不欲生。
而PHP可以通過一些函數(shù)幫助你重用代碼,你要具體用到的函數(shù)依賴于你打算重用的內(nèi)容。
主要的函數(shù)是:
* include() 和 include_once()
* require() 和require_once()
include()函數(shù)包含給定的文件,比如:
include('/home/me/myfile');
包含文件中的任何代碼都將在include() 所在的代碼頁的變量范圍之內(nèi)執(zhí)行。你可以包含服務(wù)器上的靜態(tài)文件或者包含在其他服務(wù)器上的目標(biāo)文件,方法是組合使用include()和fopen()。
include_once()函數(shù)和include()函數(shù)功能類似,只是該函數(shù)會(huì)檢查被包含文件內(nèi)的代碼是否已經(jīng)被目前的腳本所包含過。如果代碼已經(jīng)被腳本所包含,該函數(shù)就不再包含相應(yīng)的文件了。
require()函數(shù)用給定文件的內(nèi)容取代自身。這一替換過程發(fā)生在PHP引擎編譯你的代碼而不是執(zhí)行代碼階段,這可和include()不一樣,后者首先被計(jì)算再加到文擋中。require()函數(shù)多用于靜態(tài)元素,而include()函數(shù)則主要用于動(dòng)態(tài)元素。和include_once()類似,require_once()函數(shù)會(huì)檢查給定代碼是否早已經(jīng)插入到了文擋內(nèi),如果這樣,給定代碼就不會(huì)被再次插入文檔。
我建議你最好對(duì)諸如版權(quán)、靜態(tài)文本和其他不含變量的元素這類信息采用require函數(shù),那些依賴其他腳本來實(shí)現(xiàn)自己內(nèi)容的元素也最好采用require函數(shù),例如:
<HTML>
<HEAD><TITLE>Something</TITLE></HEAD>
<BODY>
[a lot of content]
<?
// insert copyright
require('/home/me/mycopyright');
?>
</BODY>
</HTML>
另一方面,我經(jīng)常用include()函數(shù)把函數(shù)庫或類似的內(nèi)容放到腳本之外:
<?
// get my function library
include('/home/me/myfunctions');
// do PHP things with my functions ?>
<HTML>
<HEAD><TITLE>Something</TITLE></HEAD>
<BODY>
[a lot of content]
</BODY>
</HTML>
你肯定會(huì)問:“那么,被included或者被required的文件都來自哪里呢?”答案很簡單:“你的系統(tǒng)。”不過,有時(shí),有些代碼會(huì)包含了諸如帶有用戶名和密碼的數(shù)據(jù)庫連接函數(shù)之類的安全信息,在這樣的情況下,顯而易見,你肯定不希望這些東西也成為文檔的一部分弄得全世界都知道。
你可以把包含文件(included或者required)放在系統(tǒng)的任何地方,只要用戶所能用到的PHP可以訪問這些文件即可。你還可以給這些文件以任何你希望給出的文件擴(kuò)展名,或者不設(shè)擴(kuò)展名。
使用include()和require()函數(shù)可以讓W(xué)eb站點(diǎn)上普遍存在或者經(jīng)常變動(dòng)的元素變得更加容易處理。