PHP技術(shù)開發(fā)技巧分享
更新時(shí)間:2010年03月23日 22:51:38 作者:
本文檔的閱讀對象是有一定經(jīng)驗(yàn)的PHP程序員,文檔中將介紹在PHP開發(fā)中的一些開發(fā)技巧,希望能對讀者有一定的啟發(fā)。
1. 提高PHP的運(yùn)行效率
PHP的優(yōu)點(diǎn)之一是速度很快,對于一般的網(wǎng)站應(yīng)用,可以說是已經(jīng)足夠了。不過如果站點(diǎn)的訪問量很高、帶寬窄或者其它的因素令服務(wù)器產(chǎn)生性能瓶頸的時(shí)候,你可能得想想其它的辦法來進(jìn)一步提高PHP的速度了。
1.1. 代碼優(yōu)化
1、用i+=1代替i=i+1。符合c/c++的習(xí)慣,效率還高。
2、盡可能的使用PHP內(nèi)部函數(shù)。自己編寫函數(shù)之前要詳細(xì)查閱手冊,看有沒有相關(guān)的函數(shù),否則費(fèi)力不討好。
3、能使用單引號字符串盡量使用單引號字符串。單引號字符串的效率要高于雙引號字符串。
4、用foreach代替while遍歷數(shù)組。遍歷數(shù)組時(shí)foreach的效率明顯高于while循環(huán),而且不需要調(diào)用reset函數(shù)。兩種遍歷方法如下:
程序1:
reset ($arr);
while (list($key, $value) = each ($arr)) {
echo "Key: $key; Value: $value\n";
}
程序2:
foreach ($arr as $key => $value) {
echo "Key: $key; Value: $value\n";
}
1.2. 壓縮頁面
HTTP1.1協(xié)議支持頁面壓縮傳送,也就是說服務(wù)器把一個(gè)頁面壓縮傳送到客戶端,然后在客戶端將頁面解壓縮再顯示給客戶。在服務(wù)器端有兩種傳輸方式,一種是頁面事先已經(jīng)壓縮好了,傳送時(shí)只要將壓縮頁面?zhèn)魉偷娇蛻舳司托校@種適用于靜態(tài)網(wǎng)頁多的情況,但是對于大多數(shù)站點(diǎn),動態(tài)頁面比較多,這種方法不太適合,因?yàn)楹芏鄠鞯娇蛻舳说捻撁嫫鋵?shí)是沒有的,是服務(wù)器接到客戶端用戶請求動態(tài)產(chǎn)生的,所以就要求每生成一個(gè)動態(tài)頁面都要在傳到客戶端以前先打包壓縮。從PHP的4.0.4版以后,可以在php.ini文件中增加一行配置“output_handler = ob_gzhandler”,這樣每個(gè)動態(tài)生成的頁面在傳送到客戶端之前都會進(jìn)行壓縮,但是根據(jù)PHP官方站點(diǎn)的說明,這個(gè)參數(shù)不能與“zlib.output_compression = on”參數(shù)同時(shí)使用,因?yàn)槿菀滓餚HP工作不正常,另外它只能壓縮PHP程序的動態(tài)生成的頁面,對于大量的靜態(tài)頁面尤其是圖像文件就不行了。但是mod_gzip模塊為Apahe提供了將靜態(tài)頁面在傳給客戶端以前先壓縮的功能,它的壓縮比最大能到10,一般情況下可以到 3,也就是說網(wǎng)站的傳輸速率一下提高了三倍多。要使用mod_gzip還要對Apache進(jìn)行相應(yīng)的配置,需要在httpd.conf文件中加入一些參數(shù):
mod_gzip_on Yes(模塊是否生效)
mod_gzip_minimum_file_size 1002(最小壓縮文件大?。?
mod_gzip_maximum_file_size 0(最大壓縮文件大小,0表示沒有限制)
mod_gzip_maximum_inmem_size 60000(最大可占用內(nèi)存)
mod_gzip_item_include file "..gif102SINA>DOUBLE_QUOTATION (以gif結(jié)尾的文件要壓縮傳送)
mod_gzip_item_include file ".txt102SINA>DOUBLE_QUOTATION
mod_gzip_item_include file ".html102SINA>DOUBLE_QUOTATION
mod_gzip_item_exclude file ".css102SINA>DOUBLE_QUOTATION
1.3. 文件緩存
這種方法通常是針對PHP、PERL等CGI程序而言的,因?yàn)檫@些程序有一個(gè)共同的特征就是接到用戶的請求后不是馬上將結(jié)果返回給用戶,而是經(jīng)過解釋器解釋執(zhí)行后將執(zhí)行結(jié)果返回給客戶,這期間通常都要涉及到數(shù)據(jù)庫的訪問。這樣就會出現(xiàn)一個(gè)問題,當(dāng)兩個(gè)用戶訪問同一個(gè)頁面時(shí),系統(tǒng)將分別對兩個(gè)請求進(jìn)行操作,但事實(shí)上這兩個(gè)操作可能是一模一樣的,這樣無形當(dāng)中增加了系統(tǒng)的負(fù)擔(dān)。所以通常的解決辦法是在系統(tǒng)內(nèi)存中開辟出一段空間,當(dāng)用戶第一次訪問頁面后將執(zhí)行結(jié)果存放在該內(nèi)存中,當(dāng)有用戶再一次訪問該頁面時(shí),系統(tǒng)就將頁面直接從內(nèi)存中調(diào)出而不需要重新解釋執(zhí)行,這段內(nèi)存空間就叫緩存。目前流行的緩存管理程序是Zend Technologies公司的Zend Cache。
2. 執(zhí)行系統(tǒng)外部命令
PHP作為一種服務(wù)器端的腳本語言,象編寫簡單,或者是復(fù)雜的動態(tài)網(wǎng)頁這樣的任務(wù),它完全能夠勝任。但事情不總是如此,有時(shí)為了實(shí)現(xiàn)某個(gè)功能,必須借助于操作系統(tǒng)的外部程序(或者稱之為命令),這樣可以做到事半功倍。
在PHP中調(diào)用外部命令,可以用如下三種方法來實(shí)現(xiàn):
2.1. 用PHP提供的專門函數(shù)
PHP提供共了3個(gè)專門的執(zhí)行外部命令的函數(shù):system(),exec(),passthru()。
system()
原型:string system (string command [, int return_var])
system()函數(shù)很其它語言中的差不多,它執(zhí)行給定的命令,輸出和返回結(jié)果。第二個(gè)參數(shù)是可選的,用來得到命令執(zhí)行后的狀態(tài)碼。
例子:
system("/usr/local/bin/webalizer/webalizer");
exec()
原型:string exec (string command [, string array [, int return_var]])
exec()函數(shù)與system()類似,也執(zhí)行給定的命令,但不輸出結(jié)果,而是返回結(jié)果的最后一行。雖然它只返回命令結(jié)果的最后一行,但用第二個(gè)參數(shù)array可以得到完整的結(jié)果,方法是把結(jié)果逐行追加到array的結(jié)尾處。所以如果array不是空的,在調(diào)用之前最好用unset()最它清掉。只有指定了第二個(gè)參數(shù)時(shí),才可以用第三個(gè)參數(shù),用來取得命令執(zhí)行的狀態(tài)碼。
例子:
exec("/bin/ls -l");
exec("/bin/ls -l", $res);
exec("/bin/ls -l", $res, $rc);
passthru()
原型:void passthru (string command [, int return_var])
passthru()只調(diào)用命令,不返回任何結(jié)果,但把命令的運(yùn)行結(jié)果原樣地直接輸出到標(biāo)準(zhǔn)輸出設(shè)備上。所以passthru()函數(shù)經(jīng)常用來調(diào)用象pbmplus(Unix下的一個(gè)處理圖片的工具,輸出二進(jìn)制的原始圖片的流)這樣的程序。同樣它也可以得到命令執(zhí)行的狀態(tài)碼。
例子:
header("Content-type: image/gif");
passthru("./ppmtogif hunte.ppm");
2.2. 用popen()函數(shù)打開進(jìn)程
上面的方法只能簡單地執(zhí)行命令,卻不能與命令交互。但有些時(shí)候必須向命令輸入一些東西,如在增加Linux的系統(tǒng)用戶時(shí),要調(diào)用su來把當(dāng)前用戶換到root才行,而su命令必須要在命令行上輸入root的密碼。這種情況下,用上面提到的方法顯然是不行的。
popen()函數(shù)打開一個(gè)進(jìn)程管道來執(zhí)行給定的命令,返回一個(gè)文件句柄。既然返回的是一個(gè)文件句柄,那么就可以對它讀和寫了。在PHP3中,對這種句柄只能做單一的操作模式,要么寫,要么讀;從PHP4開始,可以同時(shí)讀和寫了。除非這個(gè)句柄是以一種模式(讀或?qū)?打開的,否則必須調(diào)用pclose()函數(shù)來關(guān)閉它。
例子1
$fp=popen("/bin/ls -l", "r");
例子2
/* PHP中如何增加一個(gè)系統(tǒng)用戶
下面是一段例程,增加一個(gè)名字為james的用戶,
root密碼是 verygood。僅供參考
*/
$sucommand = "su --login root --command";
$useradd = "useradd ";
$rootpasswd = "verygood";
$user = "james";
$user_add = sprintf("%s "%s %s"",$sucommand,$useradd,$user);
$fp = @popen($user_add,"w");
@fputs($fp,$rootpasswd);
@pclose($fp);
3. 養(yǎng)成良好的程序風(fēng)格
在很多情況下PHP最可貴的特點(diǎn)也可能是它最薄弱的環(huán)節(jié)就是它的語法松散性。 PHP能夠如此廣泛的被使用,因?yàn)樗沟迷S多沒有經(jīng)驗(yàn)的Web開發(fā)者能夠制作出強(qiáng)大的應(yīng)用程序,而用不著過多的考慮規(guī)劃、連貫性和文檔。不幸的是,正是以上的特點(diǎn),很多的PHP源代碼很臃腫,很難閱讀甚至無法維護(hù)。決定代碼可維護(hù)性的重要因素是代碼的格式和注釋。一個(gè)工程的所有代碼應(yīng)該以貫穿始終的形式組織。以下介紹的是如何在PHP程序中養(yǎng)成良好的程序代碼風(fēng)格。
3.1. 縮進(jìn)
開發(fā)者所有的代碼應(yīng)該完全按照縮進(jìn)的方式書寫。這是提高代碼可讀性最基本的措施。即使你沒有注釋你的代碼,縮進(jìn)對于讓其他人讀懂你的代碼也是非常大的幫助。
3.2. 增加注釋
在編程時(shí)添加注釋是一個(gè)好的習(xí)慣.PHP 允許在頁面代碼中添加注釋,具體的注釋方法與C語言注釋語法相同,在腳本中可以加注釋??梢杂?"/*" 和 "*/" 來注釋一段話??捎秒p斜杠“//”作為注釋符。
3.3. 控制結(jié)構(gòu)
這個(gè)很大程度上取決于個(gè)人口味。我仍然可以看到很多的控制結(jié)構(gòu)代碼不帶分支語句造成可讀性非常差,如???你使用IF語句時(shí)不帶分支,不但可讀性變差,當(dāng)其他人修改你的程序時(shí),還會造成很多的bug。請看下例:
不好的例子:
if ($a == 1) echo 'A was equal to 1';
這是非常難以辨認(rèn)的。它能夠正常工作,但是除了你之外,別人根本不會贊賞這句代碼。 有改進(jìn)的例子:
if ($a == 1)
echo 'A was equal to 1';
現(xiàn)在至少這句代碼可以讀懂了,但是仍然沒有很好的可維護(hù)性。如果當(dāng)$a==1的時(shí)候我希望一個(gè)附加的事件發(fā)生,或者需要添加分支呢?如果后來的程序員忘記了添加大括弧或者else關(guān)鍵字,那么程序中將出現(xiàn)bug。
完美的例子
if (($a == 1) && ($b==2)) {
echo 'A was equal to 1'; //很容易的可以添加其他代碼
} elseif (($a == 1) && ($b==3)) { //其他操作
}
請注意在if和elseif后面的空格,這會將本語句和函數(shù)調(diào)用區(qū)分開來,此外,雖然在elseif的執(zhí)行程序段中沒有語句,只有注釋,表面上顯得多余可是卻給以后維護(hù)程序的程序員給予了非常方便的提示,并且非常利于添加功能。
3.4. 利用 Include 來實(shí)現(xiàn)功能模塊化
可以將常用的功能函數(shù)存于一個(gè)PHP文件,在其它PHP頁中要用其中的功能時(shí),將包含函數(shù)的PHP文件包含在調(diào)用函數(shù)的PHP文件中.這時(shí)可使用 Include 函數(shù)。具體語法為:
include($FileName);
使用時(shí)應(yīng)該注意:
1、應(yīng)避免自包含,即 File1 包含 File1;在多個(gè)文件中有包含語句時(shí),應(yīng)避免間接自包含即循環(huán)包含,如File1包含F(xiàn)ile2,F(xiàn)ile2包含F(xiàn)ile3,F(xiàn)ile3包含F(xiàn)ile1.
2、被包含的腳本語言的類型必須是PHP語言類型或腳本語句段。
PHP的優(yōu)點(diǎn)之一是速度很快,對于一般的網(wǎng)站應(yīng)用,可以說是已經(jīng)足夠了。不過如果站點(diǎn)的訪問量很高、帶寬窄或者其它的因素令服務(wù)器產(chǎn)生性能瓶頸的時(shí)候,你可能得想想其它的辦法來進(jìn)一步提高PHP的速度了。
1.1. 代碼優(yōu)化
1、用i+=1代替i=i+1。符合c/c++的習(xí)慣,效率還高。
2、盡可能的使用PHP內(nèi)部函數(shù)。自己編寫函數(shù)之前要詳細(xì)查閱手冊,看有沒有相關(guān)的函數(shù),否則費(fèi)力不討好。
3、能使用單引號字符串盡量使用單引號字符串。單引號字符串的效率要高于雙引號字符串。
4、用foreach代替while遍歷數(shù)組。遍歷數(shù)組時(shí)foreach的效率明顯高于while循環(huán),而且不需要調(diào)用reset函數(shù)。兩種遍歷方法如下:
程序1:
復(fù)制代碼 代碼如下:
reset ($arr);
while (list($key, $value) = each ($arr)) {
echo "Key: $key; Value: $value\n";
}
程序2:
復(fù)制代碼 代碼如下:
foreach ($arr as $key => $value) {
echo "Key: $key; Value: $value\n";
}
1.2. 壓縮頁面
HTTP1.1協(xié)議支持頁面壓縮傳送,也就是說服務(wù)器把一個(gè)頁面壓縮傳送到客戶端,然后在客戶端將頁面解壓縮再顯示給客戶。在服務(wù)器端有兩種傳輸方式,一種是頁面事先已經(jīng)壓縮好了,傳送時(shí)只要將壓縮頁面?zhèn)魉偷娇蛻舳司托校@種適用于靜態(tài)網(wǎng)頁多的情況,但是對于大多數(shù)站點(diǎn),動態(tài)頁面比較多,這種方法不太適合,因?yàn)楹芏鄠鞯娇蛻舳说捻撁嫫鋵?shí)是沒有的,是服務(wù)器接到客戶端用戶請求動態(tài)產(chǎn)生的,所以就要求每生成一個(gè)動態(tài)頁面都要在傳到客戶端以前先打包壓縮。從PHP的4.0.4版以后,可以在php.ini文件中增加一行配置“output_handler = ob_gzhandler”,這樣每個(gè)動態(tài)生成的頁面在傳送到客戶端之前都會進(jìn)行壓縮,但是根據(jù)PHP官方站點(diǎn)的說明,這個(gè)參數(shù)不能與“zlib.output_compression = on”參數(shù)同時(shí)使用,因?yàn)槿菀滓餚HP工作不正常,另外它只能壓縮PHP程序的動態(tài)生成的頁面,對于大量的靜態(tài)頁面尤其是圖像文件就不行了。但是mod_gzip模塊為Apahe提供了將靜態(tài)頁面在傳給客戶端以前先壓縮的功能,它的壓縮比最大能到10,一般情況下可以到 3,也就是說網(wǎng)站的傳輸速率一下提高了三倍多。要使用mod_gzip還要對Apache進(jìn)行相應(yīng)的配置,需要在httpd.conf文件中加入一些參數(shù):
復(fù)制代碼 代碼如下:
mod_gzip_on Yes(模塊是否生效)
mod_gzip_minimum_file_size 1002(最小壓縮文件大?。?
mod_gzip_maximum_file_size 0(最大壓縮文件大小,0表示沒有限制)
mod_gzip_maximum_inmem_size 60000(最大可占用內(nèi)存)
mod_gzip_item_include file "..gif102SINA>DOUBLE_QUOTATION (以gif結(jié)尾的文件要壓縮傳送)
mod_gzip_item_include file ".txt102SINA>DOUBLE_QUOTATION
mod_gzip_item_include file ".html102SINA>DOUBLE_QUOTATION
mod_gzip_item_exclude file ".css102SINA>DOUBLE_QUOTATION
1.3. 文件緩存
這種方法通常是針對PHP、PERL等CGI程序而言的,因?yàn)檫@些程序有一個(gè)共同的特征就是接到用戶的請求后不是馬上將結(jié)果返回給用戶,而是經(jīng)過解釋器解釋執(zhí)行后將執(zhí)行結(jié)果返回給客戶,這期間通常都要涉及到數(shù)據(jù)庫的訪問。這樣就會出現(xiàn)一個(gè)問題,當(dāng)兩個(gè)用戶訪問同一個(gè)頁面時(shí),系統(tǒng)將分別對兩個(gè)請求進(jìn)行操作,但事實(shí)上這兩個(gè)操作可能是一模一樣的,這樣無形當(dāng)中增加了系統(tǒng)的負(fù)擔(dān)。所以通常的解決辦法是在系統(tǒng)內(nèi)存中開辟出一段空間,當(dāng)用戶第一次訪問頁面后將執(zhí)行結(jié)果存放在該內(nèi)存中,當(dāng)有用戶再一次訪問該頁面時(shí),系統(tǒng)就將頁面直接從內(nèi)存中調(diào)出而不需要重新解釋執(zhí)行,這段內(nèi)存空間就叫緩存。目前流行的緩存管理程序是Zend Technologies公司的Zend Cache。
2. 執(zhí)行系統(tǒng)外部命令
PHP作為一種服務(wù)器端的腳本語言,象編寫簡單,或者是復(fù)雜的動態(tài)網(wǎng)頁這樣的任務(wù),它完全能夠勝任。但事情不總是如此,有時(shí)為了實(shí)現(xiàn)某個(gè)功能,必須借助于操作系統(tǒng)的外部程序(或者稱之為命令),這樣可以做到事半功倍。
在PHP中調(diào)用外部命令,可以用如下三種方法來實(shí)現(xiàn):
2.1. 用PHP提供的專門函數(shù)
PHP提供共了3個(gè)專門的執(zhí)行外部命令的函數(shù):system(),exec(),passthru()。
system()
原型:string system (string command [, int return_var])
system()函數(shù)很其它語言中的差不多,它執(zhí)行給定的命令,輸出和返回結(jié)果。第二個(gè)參數(shù)是可選的,用來得到命令執(zhí)行后的狀態(tài)碼。
例子:
system("/usr/local/bin/webalizer/webalizer");
exec()
原型:string exec (string command [, string array [, int return_var]])
exec()函數(shù)與system()類似,也執(zhí)行給定的命令,但不輸出結(jié)果,而是返回結(jié)果的最后一行。雖然它只返回命令結(jié)果的最后一行,但用第二個(gè)參數(shù)array可以得到完整的結(jié)果,方法是把結(jié)果逐行追加到array的結(jié)尾處。所以如果array不是空的,在調(diào)用之前最好用unset()最它清掉。只有指定了第二個(gè)參數(shù)時(shí),才可以用第三個(gè)參數(shù),用來取得命令執(zhí)行的狀態(tài)碼。
例子:
復(fù)制代碼 代碼如下:
exec("/bin/ls -l");
exec("/bin/ls -l", $res);
exec("/bin/ls -l", $res, $rc);
passthru()
原型:void passthru (string command [, int return_var])
passthru()只調(diào)用命令,不返回任何結(jié)果,但把命令的運(yùn)行結(jié)果原樣地直接輸出到標(biāo)準(zhǔn)輸出設(shè)備上。所以passthru()函數(shù)經(jīng)常用來調(diào)用象pbmplus(Unix下的一個(gè)處理圖片的工具,輸出二進(jìn)制的原始圖片的流)這樣的程序。同樣它也可以得到命令執(zhí)行的狀態(tài)碼。
例子:
復(fù)制代碼 代碼如下:
header("Content-type: image/gif");
passthru("./ppmtogif hunte.ppm");
2.2. 用popen()函數(shù)打開進(jìn)程
上面的方法只能簡單地執(zhí)行命令,卻不能與命令交互。但有些時(shí)候必須向命令輸入一些東西,如在增加Linux的系統(tǒng)用戶時(shí),要調(diào)用su來把當(dāng)前用戶換到root才行,而su命令必須要在命令行上輸入root的密碼。這種情況下,用上面提到的方法顯然是不行的。
popen()函數(shù)打開一個(gè)進(jìn)程管道來執(zhí)行給定的命令,返回一個(gè)文件句柄。既然返回的是一個(gè)文件句柄,那么就可以對它讀和寫了。在PHP3中,對這種句柄只能做單一的操作模式,要么寫,要么讀;從PHP4開始,可以同時(shí)讀和寫了。除非這個(gè)句柄是以一種模式(讀或?qū)?打開的,否則必須調(diào)用pclose()函數(shù)來關(guān)閉它。
例子1
$fp=popen("/bin/ls -l", "r");
例子2
復(fù)制代碼 代碼如下:
/* PHP中如何增加一個(gè)系統(tǒng)用戶
下面是一段例程,增加一個(gè)名字為james的用戶,
root密碼是 verygood。僅供參考
*/
$sucommand = "su --login root --command";
$useradd = "useradd ";
$rootpasswd = "verygood";
$user = "james";
$user_add = sprintf("%s "%s %s"",$sucommand,$useradd,$user);
$fp = @popen($user_add,"w");
@fputs($fp,$rootpasswd);
@pclose($fp);
3. 養(yǎng)成良好的程序風(fēng)格
在很多情況下PHP最可貴的特點(diǎn)也可能是它最薄弱的環(huán)節(jié)就是它的語法松散性。 PHP能夠如此廣泛的被使用,因?yàn)樗沟迷S多沒有經(jīng)驗(yàn)的Web開發(fā)者能夠制作出強(qiáng)大的應(yīng)用程序,而用不著過多的考慮規(guī)劃、連貫性和文檔。不幸的是,正是以上的特點(diǎn),很多的PHP源代碼很臃腫,很難閱讀甚至無法維護(hù)。決定代碼可維護(hù)性的重要因素是代碼的格式和注釋。一個(gè)工程的所有代碼應(yīng)該以貫穿始終的形式組織。以下介紹的是如何在PHP程序中養(yǎng)成良好的程序代碼風(fēng)格。
3.1. 縮進(jìn)
開發(fā)者所有的代碼應(yīng)該完全按照縮進(jìn)的方式書寫。這是提高代碼可讀性最基本的措施。即使你沒有注釋你的代碼,縮進(jìn)對于讓其他人讀懂你的代碼也是非常大的幫助。
3.2. 增加注釋
在編程時(shí)添加注釋是一個(gè)好的習(xí)慣.PHP 允許在頁面代碼中添加注釋,具體的注釋方法與C語言注釋語法相同,在腳本中可以加注釋??梢杂?"/*" 和 "*/" 來注釋一段話??捎秒p斜杠“//”作為注釋符。
3.3. 控制結(jié)構(gòu)
這個(gè)很大程度上取決于個(gè)人口味。我仍然可以看到很多的控制結(jié)構(gòu)代碼不帶分支語句造成可讀性非常差,如???你使用IF語句時(shí)不帶分支,不但可讀性變差,當(dāng)其他人修改你的程序時(shí),還會造成很多的bug。請看下例:
不好的例子:
if ($a == 1) echo 'A was equal to 1';
這是非常難以辨認(rèn)的。它能夠正常工作,但是除了你之外,別人根本不會贊賞這句代碼。 有改進(jìn)的例子:
if ($a == 1)
echo 'A was equal to 1';
現(xiàn)在至少這句代碼可以讀懂了,但是仍然沒有很好的可維護(hù)性。如果當(dāng)$a==1的時(shí)候我希望一個(gè)附加的事件發(fā)生,或者需要添加分支呢?如果后來的程序員忘記了添加大括弧或者else關(guān)鍵字,那么程序中將出現(xiàn)bug。
完美的例子
復(fù)制代碼 代碼如下:
if (($a == 1) && ($b==2)) {
echo 'A was equal to 1'; //很容易的可以添加其他代碼
} elseif (($a == 1) && ($b==3)) { //其他操作
}
請注意在if和elseif后面的空格,這會將本語句和函數(shù)調(diào)用區(qū)分開來,此外,雖然在elseif的執(zhí)行程序段中沒有語句,只有注釋,表面上顯得多余可是卻給以后維護(hù)程序的程序員給予了非常方便的提示,并且非常利于添加功能。
3.4. 利用 Include 來實(shí)現(xiàn)功能模塊化
可以將常用的功能函數(shù)存于一個(gè)PHP文件,在其它PHP頁中要用其中的功能時(shí),將包含函數(shù)的PHP文件包含在調(diào)用函數(shù)的PHP文件中.這時(shí)可使用 Include 函數(shù)。具體語法為:
include($FileName);
使用時(shí)應(yīng)該注意:
1、應(yīng)避免自包含,即 File1 包含 File1;在多個(gè)文件中有包含語句時(shí),應(yīng)避免間接自包含即循環(huán)包含,如File1包含F(xiàn)ile2,F(xiàn)ile2包含F(xiàn)ile3,F(xiàn)ile3包含F(xiàn)ile1.
2、被包含的腳本語言的類型必須是PHP語言類型或腳本語句段。
相關(guān)文章
php生成短網(wǎng)址/短鏈接原理和用法實(shí)例分析
這篇文章主要介紹了php生成短網(wǎng)址/短鏈接原理和用法,結(jié)合實(shí)例形式分析了php生成短網(wǎng)址/短鏈接的基本原理、實(shí)現(xiàn)方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下2020-05-05php 301轉(zhuǎn)向?qū)崿F(xiàn)代碼
php對全站的所有內(nèi)頁進(jìn)行域名301轉(zhuǎn)向2008-09-09PHP實(shí)現(xiàn)從PostgreSQL數(shù)據(jù)庫檢索數(shù)據(jù)分頁顯示及根據(jù)條件查找數(shù)據(jù)示例
這篇文章主要介紹了PHP實(shí)現(xiàn)從PostgreSQL數(shù)據(jù)庫檢索數(shù)據(jù)分頁顯示及根據(jù)條件查找數(shù)據(jù)操作,涉及PHP操作PostgreSQL數(shù)據(jù)庫的SQL條件查詢、分頁、顯示等相關(guān)操作技巧,需要的朋友可以參考下2018-06-06php將一維數(shù)組轉(zhuǎn)換為每3個(gè)連續(xù)值組成的二維數(shù)組
這篇文章主要介紹了php將一維數(shù)組轉(zhuǎn)換為每3個(gè)連續(xù)值組成的二維數(shù)組的方法,涉及array_slice函數(shù)的使用技巧,需要的朋友可以參考下2016-05-05PHP實(shí)現(xiàn)合并兩個(gè)有序數(shù)組的方法分析
這篇文章主要介紹了PHP實(shí)現(xiàn)合并兩個(gè)有序數(shù)組的方法,結(jié)合實(shí)例形式分析了php針對數(shù)組的合并、遍歷、排序、去重等常見操作技巧,需要的朋友可以參考下2017-12-12