程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 用Eclipse Europa進行Web開發,第2部分 - PHP開發工具

用Eclipse Europa進行Web開發,第2部分 - PHP開發工具

編輯:關於JAVA

身為一名 Web 開發人員,無論您想要使用哪種技術組合,Eclipse 都是可以 提高生產力的單一集成開發環境 (IDE)。在 “用 Eclipse Europa 進行 Web 開發” 三部分系列教程的第 1 部分中,您了解了如何使用 Eclipse 的最新版本 —— Europa —— 快速開發 Java™ Web 應用程序。在第 2 部分中,我們將了解使用統稱為 PHP Development Toolkit (PDT) 的另一組 Eclipse 插件開發 PHP 應用程序是多麼輕松。

開始之前

您是一名 PHP 開發人員麼?如果是,那麼使用什麼作為開 發環境?您可能是 vi 和 Emacs 爭論中的保守派,也可能想要使用 IDE,但是 還沒有決定使用哪種現有商業產品。不管采用哪種方法,都需要了解適用於 Eclipse 的 PHP Development Toolkit。沒錯,Eclipse 不再只適用於 Java 開 發人員。擁有 PHP 編程背景對於發揮本教程的最大功效至關重要。熟悉 Eclipse IDE 十分有幫助,但並非必要。

關於本系列

在 “ 用 Eclipse Europa 進行 Web 開發” 系列中,您將了解到無論選擇何種 語言,Eclipse 都是適用於 Web開發的平台。靈活的插件系統使它可以輕松地 創建各種針對使用 Java 技術、PHP 和 Ruby 的 Web 開發而定制的 Eclipse 版 本。您將看到不同的插件怎樣為每種語言提供獨特的 Eclipse 功能,還將看到 所有 Web 開發人員都可以利用的一些常用功能。在本系列中,我們將創建一個 樣例棒球 Web 應用程序,該應用程序將允許我們輸入棒球球員的比賽數據並計 算那些球員的統計信息。

關於本教程

Eclipse 多年來都是 Java 開發人員最喜愛的 IDE。但是,Eclipse 最初是 為成為適於所有語言的開發平台而設計的。Eclipse 是用 Java 編程語言編寫的 ,因此很自然地,將 Java 開發作為起點。Eclipse 的插件架構已經獲得了大量 強大插件並且是 Eclipse 成功的關鍵。Eclipse 是適合所有語言的強大開發平 台以及 Eclipse 的插件架構,綜合這兩個因素,您就可以實現針對 PHP 的基於 Eclipse 的 IDE。開發 PHP Development Toolkit 就這麼簡單。

本文是 關於用 Eclipse 開發 Web 應用程序的三部分系列教程的第 2 部分。到目前為 止,我們已經了解了使用 Eclipse IDE for Java EE Developers 在 Java 語言 中開發 Web 應用程序是多麼輕松。Java EE Edition 實際上只是運行在 Eclipse Platform 上的插件集合。在本教程中,我們將了解如何使用統稱為 PHP Development Toolkit (PDT) 的另一組 Eclipse 插件開發 PHP 應用程序。 我們還將再次了解 Java EE Edition 中的一些功能,這些功能也是 PDT 的一部 分。

先決條件

擁有 Java 編程背景對於發揮本教程的最大功效至 關重要。熟悉 Eclipse IDE 將十分有幫助,但並非必要。

系統要求

您的計算機需要安裝以下軟件或插件:

Eclipse Europa 本教程將使用 Eclipse V3.3 (Europa)。Java Development Kit (JDK) 本教程將向您展示如何使用 Java 技術開發 Web 應用程序,因此需 要使用 Java Development Kit (JDK) 5.0 或更高版本。下載 V5.0 或 V6.0。 Eclipse IDE for Java EE Developers 還需要使用 Eclipse IDE for Java EE Developers。Java 運行時環境(Java Runtime Environment,JRE) 要運行 Eclipse,必須配備 JRE。Apache Tomcat 應用程序將使用 Apache Tomcat 作為 容器。MySQL V5.0 應用程序將使用 MySQL V5.0 作為數據庫。Java Persistence API 還需要使用 Java Persistence API,特別是 OpenJPA 實現。 Eclipse PHP Development Toolkit (PDT) 本教程將向您展示如何使用 PHP 開 發 Web 應用程序,因此需要使用 PHP Development Toolkit。您可以獲得作為 現有 Eclipse 安裝的一組插件的 PDT。如果您剛開始使用 Eclipse,則可以獲 得包括 Eclipse 平台和 PDT 插件的完整安裝。PHP 需要使用 PHP,因此請獲取 最新版本,撰寫本文時的最新版本為 V5.2.1。Apache HTTP Server 需要與 PHP 集成的 Web 服務器。本教程是使用 Apache V2.0.59 開發的。Fancy PHP 調試 器 需要一個 PHP 調試器。我們使用的是 Zend 調試器 V5.2.10。操作系統 需 要能夠運行以上所有軟件或插件的操作系統。創建本系列時使用的是 Mac OS X ,但是也可以使用 Windows® 或 Linux® 的近期版本。需要相應地調整 文件位置。

PHP Development Toolkit 簡介

PDT 於 2007 年 9 月成功推出 1.0 發行版,那麼您還在等什麼?讓我們開 始使用 PDT 並成為具有更高生產力的 PHP 開發人員。

為什麼使用 IDE?

當然,PHP 的優點之一是可以用非常簡單的工具完成很多工作。可以在 Web 服務器上的 “活動” 目錄中直接編寫代碼,把浏覽器指向頁面,就這樣!需要 更改代碼?只需用一個文本編輯器修改它並刷新浏覽器。誰需要 IDE?

應用程序最初可能非常簡單,但是不可避免會變得越來越復雜。像適用於麥 克斯韋的惡魔一樣,熱力學第二定律(熵值將隨時間增長而增加)同樣適用於軟 件工程。對於大多數開發人員來說,如果有調試器可以停止執行代碼、深入到代 碼中進行研究、檢驗應用程序的狀態等,則更容易開發這類系統。

復雜的應用程序通常都有多個開發人員同時進行開發。通常需要進行源代碼 控制,並且最好將源代碼控制集成到開發環境中。使用源代碼控制通常涉及使源 代碼與執行環境(通常為 Web 服務器)保持獨立。在這種情況下,最好有一種 開發環境可以讓您輕松地把代碼部署到 Web 服務器上。

PHP 開發幾乎總是涉及使用數據庫。當然,可以使用命令行工具和基於文本 的工具來使用數據庫。也可以使用圖形程序來輕松完成操作。最好把圖形環境集 成到開發環境中。這就是所謂的集成 開發環境。 PDT 無疑就是一個集成開發環 境。

為什麼使用 PDT?

讓我們假定您確信 IDE 能夠為 PHP 開發提供好處。PDT 不是第一個也不是 惟一一個用於 PHP 的 IDE。有一些用於 PHP 的商業 IDE 受到高度關注。 Eclipse PDT 免費並且是開源的。它基於 Eclipse 構建,這意味著可以充分利 用 Eclipse Platform 的優點。它是跨平台的,因此可以在 Windows、Mac OS X 或者所選的 Linux 發行版中使用它。有大量插件適用於 Eclipse,也因而適用 於 PDT,因此可以根據需要添加專門功能,也可以根據需要在其他語言中進行開 發。讓我們就來看看使用 PDT 會有哪些好處。

使用 PDT 的好處是什麼?

我們說過 PDT 只是 Eclipse Platform 的插件集合。每個插件都提供旨在提 高生產力的特定功能。核心 PHP 插件將提供語法突出顯示、語法提示和所有 PHP 核心函數的集成查找功能。它與 Web 服務器集成在一起並且讓您可以輕松 地把代碼部署到 Web 服務器上。您可以在內部 Web 浏覽器中查看頁面,也可以 指定一個外部浏覽器(Firefox、Internet Explorer、Safari 等)來查看頁面 。

如前述,您將得到的最有價值好處之一是集成調試器。可以直接從 PDT(它 包括一個 PHP 可執行文件)執行和調試 PHP 代碼。還可以將 Web 服務器配置 為使用啟用調試的 PHP 版本,並調試在 Web 服務器上實時運行的腳本。

最後,同樣重要的一點是,您獲得了非特定於 PHP 的功能,這要歸功於 Eclipse 的可擴展性。這種可擴展性包括用於連接到任何數據庫(任何可以使用 JDBC 驅動程序的數據庫,幾乎包括所有數據庫)、創建表、查詢和更新數據等 的數據庫工具。PDT 中還有一個內置 CVS 客戶機。如果使用 Subversion 而不 使用 CVS,則可以輕松地獲得 Subversion 插件。同樣,您還可以同時編寫 PHP 、JavaScript 和 CSS;而且使用 PDT,可以選擇可用於 JavaScript 和 CSS 的 幾個優秀 Eclipse 插件。現在,您已經確定要在下一個 PHP 項目中使用 PDT, 讓我們來看看如何安裝 PDT。

安裝 PDT

獲得並安裝 PDT 毫不費力。它不僅是基於 Eclipse 構建的。像 Eclipse 一 樣,它完全是開源的。沒有試用期限也不必擔心許可證的問題。只需下載就可使 用它。下載 PDT 的方法有兩種,這取決於是否已經安裝有 Eclipse。如果您學 完了本系列的 第 1 部分,則已經擁有了 Eclipse Java EE Edition。首先來看 如何在 Eclipse 之上安裝 PDT。

作為插件安裝

首先把 PDT 安裝為 Eclipse 的插件。Eclipse 的插件架構使這項操作變得 很簡單。安裝任何 Eclipse 插件的最簡單方法是使用它的更新系統。首先選擇 Help > Software Updates > Find and Install,如下所示:

圖 1. 查找並安裝更新

現在需要選擇 Search for new features to install,如下所示:

圖 2. 搜索要安裝的新功能

現在需要把 PDT 的更新站點添加到 Eclipse 已知的站點列表中。通過單擊 New Remote Site 添加該站點。

圖 3. 新遠程更新站點

現在需要輸入 PDT 更新站點的信息。對於新遠程站點的名稱,您可以選擇能 夠幫助識別站點的任何名稱(例如,“PHP Development Toolkit Updates”) 。URL 是要輸入的重要字段,並且官方站點是 http://download.eclipse.org/tools/pdt/updates,如下所示:

圖 4. PHP 更新站點信息

新更新站點應當顯示在站點列表中並且應當被自動選中。確保它是惟一被選 中的條目並單擊 Finish。

圖 5. 選擇 PHP 更新站點

Eclipse 現在將 ping 更新站點以獲得可用於下載和安裝的更新列表。選擇 PHP Development Toolkit Updates 並單擊 Finish。

圖 6. 可用更新

現在您應當會看見要安裝的功能列表和許可證協議。接受條款並單擊 Finish 。

圖 7. 功能和許可證協議

現在 Eclipse 將下載並安裝 PDT 插件。完成後,可能會要求您重新啟動 Eclipse。在重新啟動之後,應當能夠通過切換到 PHP 透視圖來檢驗 PDT 安裝 。選擇 Window > Open Perspective > Other。

圖 8. 更改透視圖

此操作應當會打開可用透視圖列表。從列表中選擇 PHP 並單擊 OK。

圖 9. 選擇 PHP 透視圖

此操作應當會打開 PHP 透視圖。我們很快就將使用該透視圖,但是讓我們先 來快速查看 PDT 的另一種安裝方法。

獨立安裝

如果您剛開始使用 Eclipse,有一種更簡單的方法安裝 PDT。您可以下載 Eclipse 和 PDT 的 完整發行版。選擇並下載 PDT All-In-One,然後將其解壓 縮並啟動 Eclipse。啟動了 Eclipse 之後,選擇 Window > Open Perspective > PHP 來切換到 PHP 透視圖。

圖 10. 打開 PHP 透視圖

現在應當已經安裝了 PDT 並且可供使用。需要配置 Eclipse PDT。

配置 PDT

安裝了 PDT 之後,可以開始繼續處理。但是首先還有其他一些事情需要做。 有幾個 PDT 配置可以使開發更簡單。首先來配置 Web 服務器。

用 Apache 配置 PDT

我們可以設置項目並使用 Web 服務器的根目錄下的一個目錄作為源代碼文件 夾,但是最好把源代碼和部署分開。需要讓 PDT 知道 Web 服務器的位置,以便 它可以把我們的源代碼發布到其中。為此,打開首選項。

圖 11. Eclipse 首選項

在 Preferences 下,展開 PHP 並選擇 PHP Servers。

圖 12. PHP 服務器

通常在那裡已經有一個實際上尚未配置的默認服務器。您可以添加一個新服 務器或只配置默認服務器。不管采用哪種方法,您都應當會看到類似於圖 13 的 對話框。

圖 13. 配置 Web 服務器路徑

這裡最重要的是設置 Web 服務器的路徑和相應的 URL。完成後,單擊 OK。 從 Preferences > PHP 菜單中,選擇 PHP executables。

圖 14. PHP 可執行文件首選項

單擊 Add 應當會打開如下所示的對話框。

圖 15. 添加 PHP 可執行文件

您可以設置任意所需標簽。更重要的是選擇 PHP 可執行文件所在的目錄。如 果不知道它,可以使用 Browse 按鈕查找此目錄。保留 PHP 調試器設為默認值 Zend。單擊 OK,完成配置 Web 服務器。現在幾乎完成了 PDT 配置。只需要配 置 PDT 與我們的數據庫通信。

連接到 MySQL

應用程序將使用一個數據庫,具體地說是 MySQL。PDT 是一個插件集合,並 且那些插件中的幾個插件將提供特定於 PHP 的功能。它還將包括幾個用於訪問 數據庫的插件。但是,訪問數據庫不是 PHP 的特有功能,而且同樣地,PDT 所 使用的 Eclipse 數據庫插件也不是 PDT 特有的。

如果您學完了本系列的 第 1 部分,則已經使用過 PDT 附帶的數據庫插件。 如果學完了第 1 部分並在 Java EE Edition 之上安裝了 PDT 作為插件,則已 經對 PDT 進行了配置以連接到 MySQL。如果尚未學習該部分,請查看第 1 部分 並創建其中所述的 baseball 數據庫。應當能夠切換到 Database Development 透視圖 (Window > Open Perspective > Other > Database Development) 並使用 Data Source Explorer 連接到 baseball 數據庫。

圖 16. 連接到 baseball 數據庫

現在可以查詢數據庫,我們已經准備好開始為第 1 部分中開始的棒球應用程 序編寫更多代碼。

棒球應用程序

現在已經設置了 PDT,讓我們開始用 PDT 進行開發。首先在 PDT 中創建一 個 PHP 項目,然後使用 PDT 創建 PHP 文件。我們將使用 PDT 的功能來輔助編 寫代碼,然後使用它發布代碼以便測試代碼。

使用 PHP 向導

首先在 PDT 中創建一個 PHP 項目。確保您在 PHP 透視圖中 (Window > Open Perspective > PHP)。默認情況下,PHP Explorer 視圖位於左上角。 您可以根據需要來回移動。在 PHP Explorer 中,右鍵單擊並選擇 New > PHP Project。

圖 17. 新建 PHP 項目

此操作將打開 New PHP Project 向導。它是一個簡單的向導,您只需要在其 中設置項目名稱和代碼位置。

圖 18. 新 PHP 項目信息

單擊 Finish 將創建 PHP 項目。現在可以在 PHP Explorer 中右鍵單擊並選 擇 New > PHP File。

圖 19. 新建 PHP 文件

此操作將打開 New PHP File 向導。可以配置文件的路徑和名稱。

圖 20. 新 PHP 文件信息

只需單擊 Finish,PDT 將根據可以隨意編輯的模板創建一個具有基本骨架的 新 PHP 文件。我們將創建的第一個文件是用於定義常量的文件。

清單 1. constants.php

<?php
    define('DB_HOST', "127.0.0.1:3306");
    define('DB_USER', "root");
    define('DB_PASSWORD', "password");
    define('DB_NAME', "baseball");
?>

我們已經定義了數據庫連接常量。很明顯,需要更改這些值以與環境的配置 相對應。PDT 的優點之一是跟蹤項目的結構,包括常量。默認情況下,PHP Project Outline 視圖位於左下角。選中它,展開 Constants 部分,然後應當 會看到如下所示的結構。

圖 21. PHP 項目概要視圖

現在讓我們使用這些常量來創建一個數據庫連接,該數據庫連接可以包含在 需要訪問數據庫的任何腳本中。創建另一個 PHP 文件,如上所示。把這個文件 稱為 db.php。將包括 constants 文件,然後需要創建 MySQL 數據庫連接。如 果編寫過大量 PHP,您可能會知道有關語法,但是如果沒有,那麼 PDT 可以幫 助您。默認情況下,PHP Function View 也位於左下角。選中它並查找 mysql_connect 函數。

圖 22. 使用 PHP 函數視圖

您不但會獲得 PHP V5 中所有標准函數和類的清單,而且還可以訪問函數文 檔。只需選擇函數並把鼠標放在上面。找到所需的函數後,雙擊該函數,然後它 將被插入到編輯器中光標所在的位置。當您開始把輸入參數輸入到函數中時,將 在上方顯示參數信息以幫助跟蹤輸入內容。

圖 23. 帶有庫函數的代碼幫助

mysql_connect 函數將創建一個數據庫連接。現在可以編寫一些代碼來檢查 連接是否存在。代碼幫助將再次出現。

圖 24. 建議本地變量的代碼幫助

您可以想象這種代碼幫助將多麼有用,尤其是在項目和腳本變得越來越復雜 時。db.php 腳本的其余代碼如下所示:

清單 2. dp.php 腳本

<?php
    require_once(dirname(__FILE__)."/constants.php");
    $conn = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
    if (!$conn) {
      echo "Unable to connect to DB: " . mysql_error ();
      exit;
    }

    if (!mysql_select_db(DB_NAME)) {
      echo "Unable to select mydbname: " . mysql_error ();
      exit;
    }
?>

此腳本能夠在多個位置重復使用。首先創建一張用於把新球員信息輸入到系 統中的表單。

球員輸入表單

創建用於輸入新球員的基本表單。創建名為 new_player.php 的 PHP 文件。 我們將從基本 HTML 開始。

清單 3. new_player.php:僅 HTML 表單

<html>
    <head>
      <title>Player Entry Form</title>
    </head>
    <body>
      <form id="entry" method="POST">
         <input type="hidden" name="action" value="create"/>
         <div id="fnSection">
           <span id="firstNameLabel">First Name:</span>
           <input type="text" name="firstName"/>
         </div>
         <div id="lnSection">
           <span id="lastNameLabel">Last Name:</span>
           <input type="text" name="lastName"/>
         </div>
         <div id="submitSection">
           <input type="submit" value="Save"/>
         </div>
      </form>
    </body>
</html>

PDT 將為您提供優秀的 HTML 語法突出顯示功能。我們將提交表單。因此現 在只需添加處理邏輯。我們將使用 db.php 腳本並再次使用 PDT 的 PHP Function 視圖來幫助我們編寫數據庫邏輯。完成的腳本如下所示:

清單 4. new_player.php:完整

<?php
    if ($_POST["action"]){
      $label = "";
      require_once(dirname(__FILE__)."/db.php");
      $firstName = mysql_escape_string($_POST ["firstName"]);
      $lastName = mysql_escape_string($_POST ["lastName"]);
      $fullName = "$firstName $lastName";
      $sql = "insert into Players(First_Name, Last_Name)  values
                       ('$firstName','$lastName')";
      mysql_query($sql, $conn);
      $id = mysql_insert_id($conn);
      $label = " Insert successful for $fullName new  ID=$id";
    }
?>
<html>
    <head>
      <title>Player Entry Form</title>
    </head>
    <body>
    <?=$label ?><br/>
      <form id="entry" method="POST">
         <input type="hidden" name="action" value="create"/>
         <div id="fnSection">
           <span id="firstNameLabel">First Name:</span>
           <input type="text" name="firstName"/>
         </div>
         <div id="lnSection">
           <span id="lastNameLabel">Last Name:</span>
           <input type="text" name="lastName"/>
         </div>
         <div id="submitSection">
           <input type="submit" value="Save"/>
         </div>
      </form>
    </body>
</html>

現在我們有了完整的表單和腳本。接下來就該測試它了。

部署到 Web 服務器

用 PDT 部署到 Web 服務器(本例中為 Apache)十分輕松。在 PHP Explorer 中,在需要測試的 PHP 頁面中右鍵單擊並選擇 Run As > PHP Web Page。

圖 25. 作為 PHP Web 頁面運行

此操作將打開 Run PHP Web Page 對話框。該對話框將讓您知道發布代碼的 位置以及它將打開的 URL。可以根據需要調整這些信息。

圖 26. 運行 PHP Web 頁面對話框

默認情況下,Eclipse 將使用內部 Web 浏覽器(這是特定 OS 上的 “本機 ” 浏覽器,Windows 上的 Internet Explorer,Mac OS X 上的 Safari 等)來 查看 Web 頁面。我們現在將使用此設置。您應當會看到如下所示的頁面:

圖 27. Eclipse 中的新球員頁面

輸入一個新球員並單擊 save。此操作應當會刷新頁面。

圖 28. Eclipse 中的已添加球員頁面

對於快速測試來說,這個結果非常好。更復雜的應用程很可能將大量利用 CSS 和 JavaScript,因此在查看 Web 頁面時可能需要使用更復雜的調試選項。 要配置使用的 Web 浏覽器,請單擊 Preferences > Web browser,如下所示 :

圖 29. 選擇 Web 浏覽器

現在如果重新啟動應用程序,它應當在所選浏覽器中打開。

圖 30. 在 Firefox 中啟動的頁面

到目前為止,我們已經創建並部署了一個簡單頁面。讓我們通過構建略微復 雜的頁面來繼續研究 PDT 的功能。

球員管理

接下來將創建所有球員的列表。我們將查看 PDT 可以幫助完成類似任務的一 些新方法。首先從數據庫中讀取所有球員。

顯示所有球員

首先需要做的是顯示數據庫中的所有球員。創建名為 list_players.php 的 新 PHP 文件。我們將包括 db.php 腳本,因為需要查詢數據庫。需要使用 PHP 函數 mysql_fetch_assoc 把一行數據獲取到 PHP 中的聯合數組中。讓我們假定 不太熟悉這個函數並且需要比在 PDT 中獲得的基本文檔更多的幫助。您需要 PHP 手冊,不過很幸運的是:右鍵單擊可以訪問手冊,如下所示:

圖 31. 從 PDT 訪問 PHP 手冊

默認情況下,此操作將打開 PHP.net 中的聯機手冊。您可以配置此操作,如 果計算機中有手冊的本地副本,那麼配置將尤為有用。球員的基本顯示代碼如下 所示:

清單 5. 所有球員的基本顯示

<?php
    require_once(dirname(__FILE__)."/db.php");
    $message = "";
    $cnt = 0;
    $sql = "select * from Players";
    $result = mysql_query($sql,$conn);
    $list = array();
    if (!$result) {
      $message = "Could not successfully run query  ($sql) from DB: " . mysql_error();
    } else if (mysql_num_rows($result) == 0) {
      $message = "No rows found, nothing to print so  am exiting";
    } else {
      while ($record = mysql_fetch_assoc($result)){
         $list[$cnt++] = $record;
      }
    }
    mysql_free_result($result);
?>

<html>
    <head>
      <title>Player List</title>
    </head>
    <body>
      <div id="title">Player List</div>
      <div id="pTableBox">
         <table border="2">
           <thead>
              <tr>
                <td>ID</td>
                <td>First Name</td>
                <td>Last Name</td>
              </tr>
           </thead>
           <tbody>
              <?php foreach($list as $player): ?>
                <tr>
                  <td><?= $player["Id"] ?></td>
                  <td><?= $player["First_Name"] ?></td>
                  <td><?= $player["Last_Name"] ?></td>
                </tr>
              <?php endforeach; ?>
           </tbody>
         </table>
      </div>

這段代碼將顯示數據,但是假設我們還需要添加一些排序功能。

排序

排序可以在數據庫中完成,但是為了演示目的,將在 PHP 中完成排序。我們 將對聯合數組使用排序。

清單 6. 聯合數組排序

<?php
  function assoc_sort($array, $id="Id", $sort_ascending=true,  $is_object_array = false) {
    $temp_array = array();
    while(count($array)>0) {
       $lowest_id = 0;
       $index=0;
       foreach ($array as $item) {
         if (isset($item[$id])) {
            if ($array[$lowest_id][$id]) {
              if ($item[$id]<$array[$lowest_id] [$id]) {
                 $lowest_id = $index;
              }
            }
         }
         $index++;
       }
       $temp_array[] = $array[$lowest_id];
     $array = array_merge(array_slice($array, 0,$lowest_id),  
                      array_slice($array,  $lowest_id+1));
|-------10--------20--------30--------40--------50--------60------- -70--------80--------9|
|-------- XML error: The previous line is longer than the  max of 90 characters ---------|
    }
    if ($sort_ascending) {
       return $temp_array;
    } else {
       return array_reverse($temp_array);
    }
  }
?>

現在添加一種選擇排序的方法和一些用於在 Web 頁面中觸發此功能的 JavaScript。

清單 7. 修改後帶有排序功能的球員顯示

<?php
    require_once(dirname(__FILE__)."/db.php");
    $message = "";
    $cnt = 0;
    $sql = "select * from Players";
    $result = mysql_query($sql,$conn);
    $list = array();
    if (!$result) {
      $message = "Could not successfully run query  ($sql) from DB: " . mysql_error();
    } else if (mysql_num_rows($result) == 0) {
      $message = "No rows found, nothing to print so  am exiting";
    } else {
      while ($record = mysql_fetch_assoc($result)){
         $list[$cnt++] = $record;
      }
    }
    mysql_free_result($result);
    $sort = $_GET["sort"];
    if ($sort){
      // sort the data
      require_once(dirname(__FILE__)."/sort.php");
      $list = assoc_sort($list, $sort, true, false);
    }
?>

<html>
    <head>
      <title>Player List</title>
      <script type="text/javascript">
         function doSort(){
           document.getElementById("sortForm").submit ();
         }
      </script>
    </head>
    <body>
      <div id="title">Player List</div>
      <div id="sort">
         <form id="sortForm" method="GET">
         <span id="sortLabel">Sort by: 
           <select name="sort" onchange="doSort()">
              <option value="Id"> </option>
              <option value="First_Name">First Name</option>
              <option value="Last_Name">Last Name</option>
           </select>
         </span>
         </form>
      </div>
      <div id="pTableBox">
         <table border="2">
           <thead>
              <tr>
                <td>ID</td>
                <td>First Name</td>
                <td>Last Name</td>
              </tr>
           </thead>
           <tbody>
              <?php foreach($list as $player): ?>
                <tr>
                  <td><?= $player["Id"] ?></td>
                  <td><?= $player["First_Name"] ?></td>
                  <td><?= $player["Last_Name"] ?></td>
                </tr>
              <?php endforeach; ?>
           </tbody>
         </table>
      </div>

現在已經創建了一張更復雜的表單,可能會有更復雜的錯誤。這可能是引入 調試器的好時機。

調試

要使用 PHP 進行調試,必須將 Web 服務器設置為提供調試符號並允許調試 器連接、獲得調試信息以及控制執行流程。還必須有一個可以連接到服務器的客 戶機。PDT 就是這樣一個客戶機。它所支持的調試器之一是 Zend 調試器。一般 而言,Zend 是 PHP 的主要貢獻者並且也是 PDT 的主要貢獻者。

安裝 Zend 調試器

要為 PDT 安裝 Zend 調試器,可以使用 Eclipse 的軟件更新功能。這就像 把 PDT 安裝為 Eclipse 插件的過程一樣。惟一的差別是需要的更新站點是 http://downloads.zend.com/pdt。

要在服務器上安裝 Zend 調試器,需要執行幾個步驟。首先,必須下載它。 然後需要將其添加到 PHP 擴展目錄中,並且配置 php.ini 文件啟用擴展(並禁 用任何不兼容的擴展)。它隨名為 dummy.php 的腳本一起附帶,該腳本將把實 際的調試信息提供給客戶機。一切就緒後,可以開始在 PDT 中進行調試。

為 PDT 調試

要在 PDT 中設置一個斷點,請在代碼中選擇一行,在其中右鍵單擊並選擇 Toggle Breakpoints。

圖 32. 設置斷點

要開始調試,請在 PHP Explorer 中的腳本上右鍵單擊並選擇 Debug As > PHP Web Page。

圖 33. 作為 PHP Web 頁面調試

系統應當會提示您切換到 PHP 調試透視圖。執行此操作。您應當會看到調試 視圖,如下所示:

圖 34. PHP 調試透視圖

您現在可以深入到代碼中並檢查變量。

圖 35. 檢查本地變量

如果使用 Eclipse 進行 Java 開發,所有這些內容看上去將非常 類似。它是在 Java 開發中使用的同一組調試工具。它是能夠提高生產力的強大 調試器。

結束語

Eclipse 可用於為 Web開發設置所需的一切內容,它與數據庫、Web 服務器 及任何所需內容集成在一起。它將提供用於創建項目和 PHP 文件的向導,還提 供語法突出顯示、代碼幫助、代碼和項目的圖形結構視圖、函數列表以及快速訪 問文檔的功能。它可以輕松地發布和運行代碼。最後,它把 Eclipse 的強大調 試器引入 PHP 世界。

在第 3 部分中,我們將繼續利用 Europa 進行 Web 開發,使用 Ruby Development Tools (RDT) 和 RadRails 插件進一步擴展棒球應用程序。

本文配套源碼

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved