“用PHP開發健壯的代碼”是關於解決大中型應用程序中的實際問題的系列文章。在本文中,PHP老手Amol Hatwar討論了如何有效地使用變量。他還演示了如何通過使用PHP中可變的變量名來構造配置文件解析器,以便簡化腳本配置。
在我的 前一篇文章中,我研究了在規劃、設計甚至編寫代碼期間必須考慮的一些因素。在本文中,您將真正接觸到實際代碼,並可以看到實際運行中的一些東西。如果您還沒有看過前一篇文章,那麼最好現在就看一看。
正確處理變量
變量與函數是任何計算機語言必不可少的要素。有了變量,您可以將數據抽象化;有了函數,您可以將幾行代碼抽象化。正如Bruce Eckel在他的書籍 《C++編程思想》中所說的那樣,所有編程語言都提供抽象。匯編語言是對底層機器的小抽象。隨後的許多所謂的 命令式語言(如Fortran、BASIC和C)是對匯編語言的抽象。
編程語言提供的抽象的種類和質量直接關系到您所能解決的問題的復雜程度。理解PHP如何處理變量和函數,將有助於您有效地使用它們。
名稱裡有什麼?
就象我在前一篇文章中提到的那樣,命名約定和編碼約定是重要的。無論您使用什麼命名約定,請記住要在項目中嚴格遵守它。如果您使用應用得最廣泛的命名約定,那麼您的代碼將被更多的人所接受。
對變量進行命名時,在包括腳本時要特別注意不要覆蓋正在使用的變量。在大型應用程序中,當增加新的功能時,這是常見的錯誤根源。防止這一問題的最佳辦法就是使用前綴。把變量所在模塊的名稱縮寫作為前綴來使用。例如,如果一個處理投票的模塊中有一個保存用戶標識的變量,那麼您可以將該變量命名為$poll_userID或 $pollUserID。
理解PHP變量
PHP是解釋型語言。這有許多好處,很快您將學習利用其中的一些。第一個很明顯的好處是:它使您省掉了設計-編碼-編譯-測試周期 — 您在編輯器中編寫的任何代碼都立即可使用。然而,最重要的好處是您不用擔心變量的類型以及如何在內存中管理這些變量。所有分配給腳本的內存在執行完腳本後都由PHP自動收回。此外,可以對變量執行許多操作而不必知道變量的類型。 清單1中的代碼在PHP中工作十分正常,但在C和Java語言中會拋出一大堆錯誤消息:
清單 1. 帶變量的樣本PHP代碼
<?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 自動確定程序員想要做什麼,接著更改表中的類型,然後自動對表達式求值。