什麼是PRADO?
PRADO是在PHP5環境下的一個基於事件驅動和基於組件的WEB應用開發架構。使用PRADO開發WEB應用,你主要需要做的工作就是使用已有 的組件(原文是"執行個體化已經定義好的組件",熟悉物件導向編程的開發人員可能比較容易理解這句話),設定組件的屬性,為控制群組件的各種事件編寫對應的處理函 數,然後把這些組織成一個個的頁面。(譯者註:個人傾向於將component翻譯為組件,control翻譯為控制項,事實上大多數場合兩者沒有什麼區 別,但是為了讀者能夠更加容易理解原文,本文一律按此規則翻譯。)這個過程和使用RAD開發工具(比如Delphi或者Visual Basic)來開發Windows應用程式非常類似。
下面用一個簡單的例子來說明PRADO架構的工作原理。假定我們現在要使用PRADO來開發一個常見的登入頁面。首先我們選擇PRADO中的2個TTextBox控制項和1個TButton控制項來分別對應使用者名稱輸入,密碼輸入和提交按鈕。然後把對應密碼輸入的TTextBox控制項的TextMode屬性設定為"Password",並為TButton控制項的OnClick事件指定一個處理函數login。最後把這些控制項放到頁面模板的合適的位置上(後面會解釋什麼是頁面模板,實際上它和一個html頁面很相似),一個功能完善的登入頁面就實現了。控制項會自己處理好如何顯示資料,如何得到使用者輸入的資料,如何響應使用者的操作等這些事情。例如,TTextBox控制項會顯示一個輸入框讓使用者輸入;使用者輸入的密碼會被顯示為*號,而開發人員在代碼中可以通過讀取TTextBox控制項的Text屬性來擷取使用者實際輸入的密碼;當使用者點擊了提交按鈕的時候,login 函數將會被自動調用。這和傳統的PHP編程處理方式很不一樣。使用傳統的PHP編程方式,開發人員需要使用HTML標籤來顯示使用者輸入框 和按鈕,同時需要自己解析POST資料來獲得使用者的輸入以及判斷按鈕是否被點擊了等等這些事情。
PRADO 基於組件的編程方式使代碼的重用極為方便。一些重複性的單調的工作比如表單輸入的驗證,頁面狀態的管理等都可以使用PRADO已經提供的組件來處理。開發 者也可以通過繼承現有的組件或者組合現有的組件來開發新的組件滿足要求。另外一些新的組件即將發布。
目前已經有很多PHP的架構,Mojavi, WACT, PHP.MVC, Phrame等等。它們主要是建立一套鬆散的PHP程式碼群組織方式(比如 Model-view-controller)。其中一些更多的面向開發一個內容管理系統,並提供了諸如使用者管理模組等更多的功能。
和這些架構相比,PRADO更專註於建立一個代碼重用和事件驅動的編程標準。如果你曾經用Delphi或者Visual Basic等這些RAD開發工具來開發Windows程式的話,那麼你會發現使用PRADO來開發WEB應用是非常類似的,你可以很快就掌握PRADO來 進行WEB應用的開發。大多數情況下,你要做的僅僅是設定組件的屬性和回應群組件的事件。更高層次的代碼重用,比如前面所說的使用者管理模組,可以基於 PRADO組件來實現。
PRADO的思想最先我是從Apache Tapestry項目想到的。在設計和實現的時候, Borland Delphi 和Microsoft ASP.NET的設計思想起到了很重要的作用 。實際上,使用過ASP.NET的人可以發現PRADO中有很多地方和它是相似的。
安裝
PRADO需要PHP5的環境,以及SimpleXML模組(PHP5預設安裝後的環境下已經包括了這個模組)。在Windows XP和RedHat Linux環境下,已經在Apache和IIS Web伺服器上都通過了測試。
PRADO架構使用一個.zip檔案發布。在Linux下可以使用unzip,在Windows下可以使用Winzip來解壓。
解壓完畢後,會在目前的目錄下建立一個目錄prado。這個目錄主要包括以下這些檔案和目錄:
README.html 此項目的說明檔案index.html 和README.html中的內容是一樣的
COPYRIGHT 此項目的著作權資訊
HISTORY 版本升級資訊
framework/ PRADO架構的核心代碼
examples/ PRADO的一些例子
docs/ PRADO的協助文檔
完成瞭解壓之後,把prado目錄的所有東西複製到Web伺服器的根目錄下。(也可以把它複製到某一個子目錄下,甚至更深層次的目錄下,PRADO對此沒有限制。如果你將它複製到了某一個子目錄下,以下的URL地址需要做相應的修改。)