Поиск лучшего класса вложенных множеств PHP (исключая класс PEAR) - PullRequest
6 голосов
/ 07 ноября 2008

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

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

Спасибо!

Ответы [ 6 ]

7 голосов
/ 07 ноября 2008

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

4 голосов
/ 07 ноября 2008

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

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

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

2 голосов
/ 07 ноября 2008

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


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

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

Мне очень нравится алгоритм "1013 * Modified Preorder Tree Traversal ", но мне кажется, что библиотека nstree работает медленно. В моем случае я должен рекурсивно выполнять итерацию вниз по дереву. Может быть, это что-то еще в моем сценарии, который медленный.

В любом случае, я все еще ищу альтернативу, и недавно я проверил веб-сайт PEAR и нашел там библиотеку деревьев: http://pear.php.net/package/Tree

Библиотека PEAR не выглядела такой всеобъемлющей, как NSTREE, но я предполагаю, что она может быть более производительной.

Статья, которая мне очень помогла с этим вопросом: Хранение иерархических данных в базе данных

1 голос
/ 24 января 2012

Посмотрите на эту библиотеку https://github.com/fpietka/Zend-Nested-Set: Реализация модели вложенного набора для использования с Zend Framework

0 голосов
/ 06 февраля 2017

Я написал реализацию вложенного набора, которая использует Doctrine DBAL в качестве уровня абстракции базы данных. Поскольку мы используем его с Drupal, он также отслеживает revision_id.

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

0 голосов
/ 29 августа 2014

Это было давно пора, но я обновил https://github.com/fpietka/Zend-Nested-Set (даже с юнит-тестами).

...