Поиск наилучшего класса вложенных наборов PHP (исключен класс PEAR)
-
07-07-2019 - |
Вопрос
Я ищу класс вложенных наборов PHP (с MYSQL) со всеми необходимыми функциями.Например:
createLeftNode, createRightNode,createRootNode, createSubNode, deleteNode и Движущееся дерево.Не только 1 влево, 1 вправо, 1 вверх и 1 вниз, но и часть дерева в другом дереве.
Спасибо!
Решение
Хорошо вложенные наборы отлично подходят, если вы работаете с иерархическими данными.Гораздо сложнее реализовать это только с помощью php-массивов, особенно если вы хотите сохранить эту информацию в базе данных.
ты могла бы примерить это.Никогда не использовал его, но после короткого просмотра кода он выглядит почти завершенным.
Другие советы
посмотрите на вложенное поведение из Доктрины
Вокруг есть что-то новое: http://www.sideralis.org/baobab/
Старый и устаревший ответ.Библиотека больше не поддерживается.
Я использовал библиотека nstrees "баггззи" опубликовал (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
.