最近一段時間,PHP憑藉其功能強大,簡單易用的特點被越來越多的人們所喜愛和接受,成為目前最為流行的指令碼程式設計語言之一。本文將結合使用者在使用PHP過程中經常容易出現的問題,包括語法錯誤,程式運行錯誤以及邏輯錯誤等展開詳細的介紹,希望能夠對那些目前正在學習PHP語言的使用者有所協助。此外,本文還將會在文章的結束部分對PHP編程過程中應當注意的各種事項加以匯總,供讀者參考。
PHP指令碼語言所具有一個顯著的特點就是能夠自動產生變數執行個體,不要求使用者對所需要使用的變數進行聲明。該特點既有值得推崇之處,但是同時也為使用者所編寫的指令碼程式埋下了隱患。從好的方面來說,使用者不再需要象使用C語言那樣,在程式的開頭對每一個將要在程式中使用的變數進行聲明;但是,現在使用者必須非常小心每一個變數名稱的正確拼字,否則就可能會在無意當中建立了新的變數。有些程式設計語言,例如PERL等,可以記錄下程式中只使用過一次的變數的資訊,根據使用者的預先設定發出警告提示。此外,PERL還提供了一個功能十分強大的調試器。截止到4.0.2版本,PHP語言中還沒有包含調試器。但是這並沒有影響到PHP語言的流行和推廣。PHP提供了非常廣泛的功能,即使與象C語言這樣成熟的程式設計語言相比也毫不遜色。可以說,PHP是目前使用最方便,對WEB支援功能最完善的指令碼語言之一。
下面,就讓我們言歸正傳,來看一看在PHP編程過程容易出現哪些問題,以及相應的應當採用什麼樣應對措施。
分號的使用正象我們平時寫文章時必須要在每一句話的結尾處加上句號一樣,PHP要求程式中的每一條語句都必須使用分號“;”結束。這是一條最基本的文法規則,但是同時也最容易出現問題。我們在編寫程式時,很少會一行一行的檢查是否漏掉了分號,但是一旦出現任何一處疏忽,解析程式就回立刻發出錯誤報表。有時,報告中可能會包含出現問題的語句行數。
<?php
$Output="Hello World";
echo $Output
$Other="Blah";
print $SomeMoreText;
?>
上述代碼的第二行“echo $Output”的結尾處我們漏掉了一個分號,如果執行該指令碼將會產生如下錯誤提示:
Parse error: parse error, expecting `’,’’ or `’;’’ in /usr/local/apache/htdocs/test.php on line 8報告雖然指出了出現錯誤的原因,即漏掉了逗號“,”或分號“;”,但是卻將出現問題的語句定在了第八行。因為這段代碼非常簡單,我們很容易就可以找到真正出現錯誤的地方。但是,如果程式非常複雜時,要想順利的找出錯誤就有些困難了。
根據筆者以往的經驗,建議採用以下方法:
如果當錯誤報表中指出的語句沒有明顯的問題時,可以檢查位於該語句之前的其它指令行(不包括注釋行)是否正確。如果仍然沒有找到錯誤,可以將報告中指出的語句行注釋掉(在該語句行的最前面加上“//”或“#”注釋符號)或者改為使用者能夠確保完全沒有問題的其它語句。之後,重新運行程式,如果錯誤提示仍然指向同一行,就表明真正有問題的語句應當位於被注釋掉的語句行的前面。按照上述方法逐一檢查位置靠前的每一行指令,直到錯誤提示資訊發生改變。這時,我們就成功的挖出了真正的罪魁禍首。
變數的問題與其它程式設計語言要求使用者顯式聲明變數不同,PHP語言允許使用者自動使用所有變數而不必進行事先的聲明。變數名稱的拼字錯誤成為困擾PHP使用者的一個大問題。
<?php
function Combine ($FirstHalf, $SecondHalf)
{
$Combined_String=$FirstHalf.$SecondHalf;
return $Combined_String;
}
$FirstString="WDVL - ";
$SecondString="Illustrated Encyclopedia";
$Combine_Result=Combine ($FirstString, $SecondString);
print $Combined_Result;
?>
當我們運行以上指令碼時,將會看到由於程式沒有返回任何資料而出現的錯誤提示。這裡,我們為了更好的說明問題選擇了一個非常直觀的例子。在現實當中,有時問題並不會這麼簡單。相信大家都已經找到了出現問題的原因,那就是“print $Combined_Result;”中的變數名稱“$Combined_Result”應當改為“$Combine_Result”。