提问人:user35459 提问时间:11/7/2008 最后编辑:user35459 更新时间:2/7/2017 访问量:14156
搜索最佳 PHP 嵌套集类(不包括 PEAR 类)
Searching for the best PHP nested sets class (PEAR class excluded)
问:
我正在寻找一个具有所有所需函数的 PHP(带有 MYSQL)嵌套集类。 例如:
createLeftNode、createRightNode、createRootNode、createSubNode、deleteNode 和 moveTree。不仅是 1 个左、1 个右、1 个向上和 1 个向下,而且是另一棵树中一棵树的一部分。
谢谢!
答:
如果您正在处理分层数据,则嵌套良好的集合非常有用。仅使用 php 数组实现它要复杂得多,特别是如果您想将这些信息保存在数据库中。
你可以试试这个。从未使用过它,但经过简短的代码筛选后,它看起来几乎完成了。
http://www.edutech.ch/contribution/nstrees/index.php
评论
看看 Doctrine 的嵌套行为
周围有一些新的东西:http://www.sideralis.org/baobab/
陈旧过时的答案。不再支持该库。
我在一个项目中使用了 nstrees 库“buggzzy”(http://www.edutech.ch/contribution/nstrees/index.php),在这个项目中,我必须让用户能够创建和编辑其公司的组织结构图。
我非常喜欢“修改后的预排序树遍历”算法,但在我看来,nstree 库很慢。就我而言,我必须递归地沿着树进行迭代。也许是我剧本中的其他东西很慢。
无论如何,我也在寻找替代方案,我最近查看了 PEAR 网站,在那里也发现了一个树库:http://pear.php.net/package/Tree
PEAR 库似乎不像 NSTREE 那样全面,但我认为它可以更高性能。
一篇文章对这个问题有很大帮助:在数据库中存储分层数据
看看这个库 https://github.com/fpietka/Zend-Nested-Set: 实现一个嵌套集合模型,用于 Zend Framework
评论
早就应该更新了,但我更新了 https://github.com/fpietka/Zend-Nested-Set(即使是单元测试)。
我编写了一个嵌套集实现,它使用 Doctrine DBAL 作为数据库抽象层。因为我们将它与 Drupal 一起使用,所以它还会跟踪 .revision_id
上一个:使用存储过程参数的嵌套数据列表
评论