PHP開發經驗總結 PHP開發經驗總結

原文: PHP開發經驗總結

1.使用內嵌的HTML代碼,而不是PHP的echo語句。 

由於PHP是一門嵌入式Web編程語言,能夠將HTML代碼和PHP代碼相互嵌入。可是不少程序員擔憂在HTML代碼中過多的使用」"嵌入PHP代碼會屢次調用PHP解釋器,從而下降了PHP代碼的運行速度,因此寧願使用PHP的echo語句來輸出HTML代碼,而不直接使用HTML代碼。但事實卻偏偏相反。每個PHP頁面只調用一次PHP解釋器來解釋全部的PHP代碼,因此,只在須要時才嵌入PHP代碼,而大多數的時候直接使用HTML代碼輸入結果,不但不會下降程序的運行速度,並且由於減小了對echo語句的解析,每每能夠提升代碼的運行速度。 


2.儘可能使用str-replace而不是ereg-replace 

習慣使用Perl進行編程的程序員更加願意使用ereg_replace完成字符串替換工做,由於在PHP中ereg_replace的用法和Perl中模式匹配的用法相近。可是,下面的這段代碼證實,使用str_replace 代替 ereg_replace將能夠大大提升代碼的運行速度。 



3.注意字符串的引用 

PHP和其它不少編程語言同樣,可使用雙引號("")來引用字符串,也可使用單引號()。可是在PHP中,若是使用雙引號來引用字符串,那麼PHP解析器將首先分析字符串中有沒有對變量的引用,有變量的話,將對變量進行替換。若是是單引號,則沒有如此複雜——直接將單引號包含起來的全部字符串直接顯示出來。顯然,在PHP編程中,若是使用單引號引用字符串變量要比使用雙引號快速一些。 


4.在執行for循環以前肯定最大循環數,不要每循環一次都計算最大值 
<!--p 
//不要這樣作 
for ($i=0;$i<=count($array);$i++){ 
    ... 

//應該這樣作 
$array_length = count($array); 
for ($i=0;$i<=$array_length;$i++){ 
    ... 

--> 

5.注意include與require的區別 

在PHP變成中,include()與require()的功能相同,但在用法上卻有一些不一樣,include()是有條件包含函數,而require()則是無條件包含函數。例如在下面的一個例子中,若是變量$somgthing爲真,則將包含文件somefile 
if($something){ 
    include(「somefile.txt」); 

但無論$something取何值,下面的代碼將把文件somefile包含進文件裏: 
if($something){ 
    require(「somefile.txt」); 



6.作數據庫查詢操做時,應儘可能避免聯合操做 

比起其它的Web編程語言來講,PHP的數據庫功能十分強大。 
可是在PHP中數據庫的運行仍然是一件十分費時費力的事情,因此,做爲一個Web程序員,要儘可能減小數據庫的查詢操做,同時應該爲數據庫創建適當的索引。 
另外一件值得注意的事情是在用PHP操做數據庫時,儘量不使用多個數據表的聯合操做,儘管聯合操做能夠加強數據庫的查詢功能,可是卻大大增長了服務器的負擔。 


7.若是你想知道腳本開始執行(譯註:即服務器端收到客戶端請求)的時刻,使用$_SERVER[‘REQUEST_TIME’]要好過於用time()函數。 


8.不必定必需要面向對象,面向對象是比較耗時的。有些簡單的操做仍是過程的快。 


9.$row['id']的速度是$row[id]的7倍 


10.echo 比 print 快,而且使用echo的多重參數(譯註:指用逗號而不是句點)代替字符串鏈接 

好比echo $str1,$str2。 


11.當if…else…嵌套比較多時,應選擇switch….case 


12.將不用的mysql查詢結果要及時地釋放掉(mysql_free_result()) 


13.isset()和empty()的區別 

二者都是測試變量用的 
可是isset()是測試變量是否被賦值,而empty()是測試一個已經被賦值的變量是否爲空 
若是一個變量沒被賦值就引用在php裏是被容許的,但會有notice提示 
若是一個變量被賦空值,$foo=」"或者$foo=0或者 $foo=false,那麼empty($foo)返回真,isset($foo)也返回真,就是說賦空值不會註銷一個變量。 

要註銷一個變量,能夠用 unset($foo)或者$foo=NULLphp

相關文章
相關標籤/搜索