У меня есть древовидная структура объектов, состоящая из двух типов объектов:
- объект класса
Category
- объект класса
CategoryLink
Структура выглядит следующим образом:
Вся история начинается с массива Categories
, в котором нет parent
Каждый Category
имеет несколько неважных свойств и несколько важных:$parent
- содержит идентификатор родителя Category
,$children
- содержать в массиве детей Categories
(может быть пустым, если в категории, конечно, нет детей).$links
- содержащий массив CategoryLinks
(также возможно пустой)
Пока __constructing
a Category
, я ищу существующие дочерние элементы Categories
и CategoryLinks
, и если они есть, я создаю их экземпляры и добавляю их в $children
и $links
поэтому эта процедура повторяется для детей и их детей и так далее, пока не будет достигнута категория без детей.
Так что эта процедура делает то, что она в основном создает дерево Categories
и их Links
.Это идет достаточно хорошо, пока я не хочу выводить эту древовидную структуру (используя Smarty
), и я не совсем уверен, как правильно выполнить итерацию по ней.Желаемый вывод - что-то вроде этого
Parent1 -its unimportant properties
-Child1 - its unimportant properties
-Child2 -...
-Child2's Child1
-Child2's Child2
-Child3
Parent2
-Child1
-Child1's Child1
-Child2
Parent3
...
Я не уверен, что лучше перебрать его в PHP и преобразовать в многомерный массив и перебрать в Smarty, или сделать все этопуть в Смарти.
* обратите внимание, что я не упомянул объекты класса CategoryLink
, поскольку Category
может содержать только одномерный массив из них, поэтому итерации по ним довольно просты,Я просто не знаю, как перебирать всю структуру.
Что лучше |правильный способ сделать это?