首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

OfficeXP 風格左側選單:PHP OOP 版完整實作與架構解析

     編輯:PHP 相關知識

專案架構:MVC 雛形與 Frame-based 佈局

程式碼採用單一入口 Application 類別分派請求,依 $key 參數決定輸出四種視圖之一:

  • Frame:輸出 <frameset cols="161,*">,左側載入 key=menu,右側載入 key=about。
  • Menu:左側選單主體,含多層級分類、項目、子分類、分隔線,支援滑鼠懸停高亮(Office XP 視覺風格)。
  • Page:右側內容頁,接收 $id 參數顯示歡迎訊息。
  • About:關於頁,說明瀏覽器相容性(僅 IE 5+)。

Menu 類別核心設計

屬性/方法用途
$MenuOn控制預設展開的分類索引
menuStartSection($seq, $name)啟動一個分類區塊,輸出標題列與摺疊控制 JS 掛點
menuAddItem($label, $desc, $url, $target)新增選單項目,支援狀態列提示與目標框架
menuAddSubSection($label)二級分類標題(深灰背景,黑字)
menuAddSubSectionLine()分隔線(2px 高圖片)
menuEndSection()關閉分類區塊
menuSectionAsItem($seq, $name, $desc, $url)可點擊的分類標題(直接連結)
scriptOut()輸出控制預設展開分類的 JS(計算 TopMenuHeight + MenuBarHeight * MenuOn)

視覺風格參數化

所有顏色、字體、高度、邊框均定義為類別屬性($MenuBackColor, $SelectedItemBackgroundColor 等),支援兩種模式切換:

  • 一般模式:深灰背景、白字、反白高亮。
  • Office XP 模式:淺灰背景、黑字、藍邊框(#08246B)、淺藍高亮(#B5BED6)、二級深灰背景。

關鍵技術細節

  1. Heredoc 輸出大量 HTML/JS:使用 <<<EOD 語法保持樣板可讀性,變數直接內插。
  2. URL 編碼處理:buildURL() 將空格轉 +,確保查詢字串正確傳遞中文參數。
  3. 全域變數相依:$PHP_SELF、$key、$id 皆為全域,現代框架建議改用 $_SERVER/$_GET 並注入依賴。
  4. 框架目標框架:預設 main,對應 frameset 右側 frame name。

現代化重構路徑

  1. 移除 Frameset:改用 AJAX 載入內容區,或採用 SPA 架構(Vue/React + PHP API)。
  2. 資料驅動選單:將選單結構定義為 JSON/資料庫,Menu 類別改為渲染器,支援無限層級遞迴。
  3. CSS 取代內嵌樣式:將視覺參數輸出為 CSS 變數或 BEM class,支援主題切換與響應式斷點。
  4. 無障礙強化:加入 role="tree"、aria-expanded、鍵盤導航(Enter/空白展開、方向鍵移動)。
  5. 依賴注入:Application 建構子注入 Menu, Page, About 實例,便於單元測試與替換實作。

此程式碼雖屬早期 PHP 4 時代產物,但其「單一入口分派、視圖類別封裝、參數化視覺風格」的設計思想,仍為現代 PHP 元件化開發的啟蒙範本。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved