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

xzn_html_tree 1.0 測試範例:多層級節點註冊與顯示驗證

     編輯:PHP 相關知識

測試腳本說明

本範例展示 xzn_html_tree 類別處理非循序、多層級節點註冊的能力。節點 ID 採用點號分隔層級(如 0.0.0.2),註冊順序刻意打亂,驗證 ksort() 排序與遞迴輸出的正確性。

完整測試碼

<?php
require_once 'xzn/html/tree.php';

$tree = new Tree;
$tree->jspath = 'js/outline.js'; // 前端摺疊 JS 路徑

// 亂序註冊測試
$tree->set('0', 'a1', 'url');
$tree->set('0.0.0', 'aaa', 'url');
$tree->set('0.0.0.0', 'bbb', 'url');
$tree->set('0.0.0.2', 'ccc', '');      // 無連結節點
$tree->set('0.0.0.1', 'ddd', 'url');   // 同層較早註冊
$tree->set('0.0', 'eee', 'url');       // 覆蓋測試:同 ID 後註冊生效
$tree->set('1', 'ff', 'url');

// 輸出樹狀結構
$tree->display();
?>

預期輸出結構

  • 0 a1
    • 0.0 eee(後註冊覆蓋先前 0.0 aaa)
      • 0.0.0 bbb
        • 0.0.0.0 (無標題,僅佔位)
        • 0.0.0.1 ddd
        • 0.0.0.2 ccc(無連結)
  • 1 ff

驗證重點

  1. ID 覆蓋行為:同一 ID 多次 set(),後者覆蓋前者(陣列鍵值特性)。
  2. 層級自動建立:註冊 0.0.0.0 時,父層 0、0.0、0.0.0 若不存在會自動建立空節點。
  3. 排序穩定性:ksort() 確保同層節點按 ID 字典序輸出,不受註冊順序影響。
  4. 無連結節點渲染:value 為空字串時,輸出純文字而非 <a> 標籤。

已知限制與改進方向

  • eval() 動態建立陣列路徑存在注入風險,建議改用 array_walk_recursive 或參考指標迴圈。
  • 前端相依 FrontPage 2000 專屬 outline.js,現代瀏覽器相容性差,建議重寫為標準 <details>/<summary> 或 Vue/Alpine.js 元件。
  • 缺少節點屬性擴充機制(如 CSS class、target、tooltip),可在 TreeNode 增加 $attributes 陣列支援。

此測試範例可作為重構前的行為基準,確保新版本輸出結構與舊版一致,實現平滑遷移。

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