正確處理變數
變數與函數是任何電腦語言必不可少的要素。有了變數,您可以將資料抽象化;有了函數,您可以將幾行代碼抽象化。正如 Bruce Eckel 在他的書籍《C++ 編程思想》中所說的那樣,所有程式設計語言都提供抽象。組合語言是對底層機器的小抽象。隨後的許多所謂的命令式語言(如 Fortran、BASIC 和 C)是對組合語言的抽象。
程式設計語言提供的抽象的種類和品質直接關係到您所能解決的問題的複雜程度。理解 PHP 如何處理變數和函數,將有助於您有效地使用它們。
名稱裡有什嗎?
就象我在前一篇文章中提到的那樣,命名規範和編碼約定是重要的。無論您使用什麼命名規範,請記住要在項目中嚴格遵守它。如果您使用應用得最廣泛的命名規範,那麼您的代碼將被更多的人所接受。
對變數進行命名時,在包括指令碼時要特別注意不要覆蓋正在使用的變數。在大型應用程式中,當增加新的功能時,這是常見的錯誤根源。防止這一問題的最佳辦法就是使用首碼。把變數所在模組的名稱縮寫作為首碼來使用。例如,如果一個處理投票的模組中有一個儲存使用者標識的變數,那麼您可以將該變數命名為 $poll_userID 或 $pollUserID。
理解 PHP 變數
PHP 是解釋型語言。這有許多好處,很快您將學習利用其中的一些。第一個很明顯的好處是:它使您省掉了設計-編碼-編譯-測試周期 — 您在編輯器中編寫的任何代碼都立即可使用。然而,最重要的好處是您不用擔心變數的類型以及如何在記憶體中管理這些變數。所有分配給指令碼的記憶體在執行完指令碼後都由 PHP 自動收回。此外,可以對變數執行許多操作而不必知道變數的類型。清單 1 中的代碼在 PHP 中工作十分正常,但在 C 和 Java 語言中會拋出一大堆錯誤訊息:
清單 1. 帶變數的樣本 PHP 代碼
$myStr = 789696; // An integer.
$myVar = 2; // Another integer.
$myStr = "This is my favorite band: "; // Strings are more fun.
$myStr = $myStr . "U" . $myVar; // Doing this is OK, too.
echo "$myVar\n";
?>
安裝完 PHP 後,如要運行運行代碼,可首先將該代碼儲存為一個 .php 檔案,再將該檔案放置在 Web 服務器上,然後將瀏覽器指向該檔案。更好的辦法是安裝 PHP 的 CGI 版本。然後,通過在 shell 或命令提示字元下輸入以下命令,並用包含您的指令碼的檔案名稱替代 script-name,這樣就可以運行該指令碼了。
path-to-php/php script-name
該代碼能夠正常工作,因為 PHP 是類型寬鬆的語言。用通俗易懂的英語,可以不考慮變數類型,可以把字串賦值給整數,以及毫不費力地用較大的字串替代較小的字串。這在象 C 這樣的語言中是不可能的事情。在內部,PHP 將變數所擁有的資料與類型分開儲存。類型儲存在單獨的表中。每當出現包含不同類型的運算式時,PHP 自動確定程式員想要做什麼,接著更改表中的類型,然後自動對錶達式求值。
介紹一個常見的小問題
不用擔心類型固然很好,但有時那也會使您陷入真正的麻煩。怎麼回事呢?這裡有一個實際的樣本:我常常必須把在基於 Windows 的 PC 上建立的內容移到 Linux 系統,以便能在 Web 上使用它們。基於 Windows 的檔案系統在處理檔案名稱時是不區分大小寫。檔案名稱 DefParser.php 和 defparser.php 指向 Windows 上的同一檔案。在 Linux 作業系統上,它們指向不同的檔案。您可能提倡檔案名稱要麼全用大寫,要麼全用小寫,但最好的做法應該是使大小寫保持不變。
解決這個小問題
假設您想要一個函數,它能在不考慮大小寫情況下檢查給定檔案是否存在於某個目錄中。首先,將這個任務分解成一些簡單的步驟。分解代碼可能聽起來有些可笑,但它確實有助於您在編寫代碼時將主要精力放在這段代碼上。另外,在紙上重寫步驟始終比重寫代碼容易得多:
1 2 3 4 下一頁