Поиск лучшего класса вложенных множеств PHP (исключая класс PEAR)

Я ищу PHP (с MYSQL) класс вложенных множеств со всеми необходимыми функциями. Например:

createLeftNode, createRightNode, createRootNode, createSubNode, deleteNode и moveTree. Не только 1 слева, 1 справа, 1 вверх и 1 вниз, но и часть дерева в другом дереве.

Спасибо!

6 ответов

Решение

Хорошо вложенные множества хороши, если вы работаете с иерархическими данными. Гораздо сложнее реализовать его только с массивами php, особенно если вы хотите сохранить эту информацию в базе данных.

Вы могли бы примерить это. Никогда не использовал его, но после короткой проверки кода он выглядит почти завершенным.

http://www.edutech.ch/contribution/nstrees/index.php

Посмотрите на вложенное поведение Доктрины

Вокруг есть что-то новое: http://www.sideralis.org/baobab/


Старый и устаревший ответ. Библиотека больше не поддерживается.

Я использовал опубликованную библиотеку nstrees "buggzzy" ( http://www.edutech.ch/contribution/nstrees/index.php) для проекта, где мне нужно было дать пользователю возможность создавать и редактировать организационную структуру своей компании.,

Мне очень нравится алгоритм "Modified Preorder Tree Traversal", но мне кажется, что библиотека 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,

https://github.com/previousnext/nested-set

Другие вопросы по тегам