課程117:【專案實作】一、網站開發的基礎架構(Framework)


摘要:

在這個課程當中,我們著重在建立網站的基礎架構。這個架構包含了:開發規範,核心模組,共用檔案等。在課程最後,會練習以這個架構,製作出網站的首頁。下一個課程中,我們將開發帳號管理的子系統,更詳細介紹如何使用這個架構。


檔案下載

專案開發規範:

由於這個專案是由多人共同開發出來,為了日後能順利整合各開發者所開發出來的子系統,以及確保日後程式更新與維護的便利性,所以,訂定以下的規範,請各位開發者務必遵守:

  1. 所有子系統,以及頁面一律使用這個課程所開發的核心模組。
  2. 各子系統應將所有頁面及程式模組安置在同一個資料夾(project/www/資料夾之下)。
  3. 各子系統都必須含括網站根目錄中的 config.php 檔案,以確保含括檔的路徑不至於混淆。
  4. 各子系統必須定義自己的樣版設定檔。
  5. 各子系統均應有一個類別檔,繼承 DB 父類別。
  6. 公共存取頁面,請產生一個 PublicPage 的物件。
  7. 系統管理頁面,請產生一個 SysPage 的物件。
  8. 所有圖片檔,一律放在同一個資料夾(project/www/images/資料夾之下)。
  9. 使用 Smarty 樣版引擎,製作所有頁面的樣版。
  10. 頁面中所有的連結,均需使用網站絕對網址。
  11. 使用統一的 CSS 定義文件的樣式(project/www/css/style.css)。
  12. 使用 Ant 配置檔案及設定資料庫。
  13. 使用相同的資料夾結構。
  14. 撰寫註解。方便其他開發者,了解你的程式。

決定核心模組:

在開發網站的初期,一般說來,未經過詳細的系統分析的過程,很難一次就決定核心模組有哪些。但是,如果,要經過漫長的系統分析的過程,再來開始決定核心模組,往往無法達到時間上的要求。所以,比較好的方式是,先就目前所知的部分,先行決定要開發哪些模組。等日後,對系統有更清楚的認識,以及在日後開發其他子系統時,發覺需要修正核心的部分時,再來修改核心。

不過,也不能隨便亂寫。最好要有個可以參考的基準。我們採用的基準就是將所有程式,分為以下三個層:

  1. 資料層(Data Layer):負責處理有關存取資料庫的工作。
  2. 邏輯層(Logic Layer):負責處理各子系統模組特定功能需求的工作。
  3. 呈現層(Presentation Layer):負責處理有關頁面呈現的工作。

決定以這三個層作為開發基準之後,我們就容易決定要有哪些作為我們核心的模組。下表是目前所決定的模組。

類別名稱 說明 檔名
DB 負責存取資料庫的類別 DB.php Data
Page 繼承 Smarty 類別,呈現頁面的類別,定義頁面的共同屬性及方法 Page.php Presentation
PublicPage 繼承 Page 類別,負責呈現公共頁面 PublicPage.php Presentation
SysPage 繼承 Page 類別,負責呈現系統管理頁面 SysPage.php Presentation

上面的表格中,並沒有在核心模組中,定義有關邏輯層的類別。這是因為各子系統除了在存取資料庫時,具有共同的功能需求之外,其他部分,到目前為止,還沒有發現需要在核心中,另行撰寫一個父類別來定義共同的屬性及功能。何況,因為所有子系統的類別均需繼承 DB 這個父類別。如果,真有需要的話,可以視情況需要,在 DB 父類別中,再來定義額外的屬性及方法。


設定檔:

設定檔共有兩類,以下表說明:

種類 說明
網站 PHP 的設定檔 在 www/網站根目錄底下有一個 config.php ,負責設定路徑以及資料庫等參數。
樣版的設定檔 在 config/底下的各設定檔,每一子系統擁有一個設定檔,負責設定樣版所使用的變數。

 


Ant Build.xml:

一個專案主檔,負責配置檔案到遠端伺服器。另一個資料庫檔,負責設定資料庫。


開發流程:

子系統開發流程
網頁開發流程