george-zakharov/tree-structure

该包最新版本(dev-master)没有可用的许可证信息。

此项目帮助通过MySQL使用嵌套集方法操作树结构。

dev-master 2021-02-13 12:47 UTC

This package is auto-updated.

Last update: 2024-09-13 20:58:15 UTC


README

文件

index.php

  • 这是应用程序的入口。
  • 它需要 NodeHandler.php 并在其中创建新的 NodeHandler 对象。
  • 在代码块的顶部,以注释形式展示了节点插入和删除的可能实现。
  • 在 HTML 的 <!-- Tree structure --> 块内部,存在 $nodes->showTree()$nodes->showTree(3),提供两种模式的 节点树 表示
    • $nodes->showTree() 显示整个 节点树
    • $nodes->showTree(3) 显示由 节点$id = 3)限制的 节点树 的部分。

main.css

  • 这是应用程序的主样式表。

App/DbConnector.php

  • 通过单例模式提供对 数据库 的连接。
  • 连接参数存储在 DbConnector 类的属性中
    • $host 为主机名,
    • $db_name数据库 名称,
    • $user 为登录名,
    • $pass 为密码。
  • 主要方法包括
    • getInstance() 用于 DbConnector 类,
    • getConnection() 用于 PDO 对象

App/Model.php

  • 该文件存储用于对 DB 执行操作的 Model 类。
  • 主要方法包括
    • getNodes() 显示整个节点树或其部分,
    • setNode() 向树中添加新节点,
    • deleteNode() 从树中删除节点。

App/NodeHandler.php

  • 该方法为 index.php 页面提供节点的表示。
  • 主要方法包括
    • showTree() 用于 echo 整个节点树或如果提供 参数 则为其部分,
    • addNewNode() 通过 Model.php 将新节点添加到 数据库 的根节点或指定级别,
    • deleteNode() 通过 Model.php 从指定级别或删除整个树中删除节点。

tree-structure-example.sql

  • 这是我的本地 tree-structure 数据库 表的转储。
  • 部分填充以供示例。

数据库结构

  • 数据通过 嵌套集 方法存储。
  • 例如,提供了一个目录(汽车)的这种层次结构
  • vehicle
    • 类型(摩托车,汽车)
      • 品牌(奥迪,宝马,福特)
        • 型号(A1,A2,Focus等。)
          • 年份(1999,2003等。)
  • 所有节点都嵌套在相应的级别上。
  • 可以在靠近 vehicle 的新根级别中添加新根。例如,animal 有其自己的节点层次结构,但通过 right_keyleft_key 与相邻的 根节点 相连接。