PHP編程之糾錯指南

最近一段時間,PHP憑借其功能強大,簡單易用的特點被越來越多的人們所喜愛和接受,成為目前最為流行的腳本編程語言之一。本文將結合用戶在使用PHP過程中經常容易出現的問題,包括語法錯誤,程序運行錯誤以及邏輯錯誤等展開詳細的介紹,希望能夠對那些目前正在學習PHP語言的用戶有所幫助。此外,本文還將會在文章的結束部分對PHP編程過程中應當註意的各種事項加以匯總,供讀者參考。
  PHP腳本語言所具有一個顯著的特點就是能夠自動生成變量實例,不要求用戶對所需要使用的變量進行聲明。該特點既有值得推崇之處,但是同時也為用戶所編寫的腳本程序埋下瞭隱患。從好的方面來說,用戶不再需要象使用C語言那樣,在程序的開頭對每一個將要在程序中使用的變量進行聲明;但是,現在用戶必須非常小心每一個變量名稱的正確拼寫,否則就可能會在無意當中創建瞭新的變量。有些編程語言,例如PERL等,可以記錄下程序中隻使用過一次的變量的信息,根據用戶的預先設置發出警告提示。此外,PERL還提供瞭一個功能十分強大的調試器。截止到4.0.2版本,PHP語言中還沒有包含調試器。但是這並沒有影響到PHP語言的流行和推廣。PHP提供瞭非常廣泛的功能,即使與象C語言這樣成熟的編程語言相比也毫不遜色。可以說,PHP是目前使用最方便,對WEB支持功能最完善的腳本語言之一。
  下面,就讓我們言歸正傳,來看一看在PHP編程過程容易出現哪些問題,以及相應的應當采用什麼樣應對措施。
  分號的使用正象我們平時寫文章時必須要在每一句話的結尾處加上句號一樣,PHP要求程序中的每一條語句都必須使用分號“;”結束。這是一條最基本的語法規則,但是同時也最容易出現問題。我們在編寫程序時,很少會一行一行的檢查是否漏掉瞭分號,但是一旦出現任何一處疏忽,解析程序就回立刻發出錯誤報告。有時,報告中可能會包含出現問題的語句行數。
  $#@60;?
  $Output=”Hello World”;
  echo $Output
  $Other=”Blah”;
  print $SomeMoreText;

  ?$#@62;
  上述代碼的第二行“echo $Output”的結尾處我們漏掉瞭一個分號,如果執行該腳本將會產生如下錯誤提示:
  Parse error: parse error, expecting `’,’’ or `’;’’ in /usr/local/apache/htdocs/test.php on line 8報告雖然指出瞭出現錯誤的原因? 漏掉瞭逗號“,”或分號“;”,但是卻將出現問題的語句定在瞭第八行。因為這段代碼非常簡單,我們很容易就可以找到真正出現錯誤的地方。但是,如果程序非常復雜時,要想順利的找出錯誤就有些困難瞭。
  根據筆者以往的經驗,建議采用以下方法:
  如果當錯誤報告中指出的語句沒有明顯的問題時,可以檢查位於該語句之前的其它指令行(不包括註釋行)是否正確。如果仍然沒有找到錯誤,可以將報告中指出的語句行註釋掉(在該語句行的最前面加上“//”或“#”註釋符號)或者改為用戶能夠確保完全沒有問題的其它語句。之後,重新運行程序,如果錯誤提示仍然指向同一行,就表明真正有問題的語句應當位於被註釋掉的語句行的前面。按照上述方法逐一檢查位置靠前的每一行指令,直到錯誤提示信息發生改變。這時,我們就成功的挖出瞭真正的罪魁禍首。
  變量的問題與其它編程語言要求用戶顯式聲明變量不同,PHP語言允許用戶自動使用所有變量而不必進行事先的聲明。變量名稱的拼寫錯誤成為困擾PHP用戶的一個大問題。
  $#@60;?
  function Combine ($FirstHalf, $SecondHalf)
  {
   $Combined_String=$FirstHalf.$SecondHalf;
   return $Combined_String;
  }
  $FirstString=”WDVL – “;
  $SecondString=”Illustrated Encyclopedia”;
  $Combine_Result=Combine ($FirstString, $SecondString);
  print $Combined_Result;
  ?$#@62;
  當我們運行以上腳本時,將會看到由於程序沒有返回任何數據而出現的錯誤提示。這裡,我們為瞭更好的說明問題選擇瞭一個非常直觀的例子。在現實當中,有時問題並不會這麼簡單。相信大傢都已經找到瞭出現問題的原因,那就是“print $Combined_Result;”中的變量名稱“$Combined_Result”應當改為“$Combine_Result”。

You May Also Like