Мій погляд на дерева в PHP

Коли я здивувався побудовою дерева, мені було ліньки думати самому, я вирішив пошукати по цих ваших тирне готові рішення. Готові рішення начебто хтось пропонував, але ці готові рішення були реалізовані у фреймворках, що мені не підходило, інші ж дерева будували з купою запитів до БД, але я вірив, що є спосіб побудувати скільки завгодно величезне дерево всього в 1 запит. , причому, без усяких збочень з усякими там COUNT() та іншою лабудою. Не тягтиму часу, наведу код свого класу, який будує дерево меню:

Код класу, що є елементом меню:

Не знаю, як зробити підсвічування php коду, але не про те мова. В принципі, думаю, зрозуміло, що методGetMenu()дозволяє отримати як дерево меню, так і меню у вигляді списку. Крім того, якщо в якості другого аргументу вказати число від 0 до нескінченності, то дерево меню завантажиться з глибиною, що дорівнює цьому числу.

методGetMenuPathTo()шукає шлях до елемента меню, чий id передається як параметр, цей метод був реалізований для обмеження хлібних крихт на сайті

CommonUtils::DelPrefix()дозволяє видалити префікси в асоціативних масивах, дозволяючи отримати реальні імена властивостей елементів меню.CommonUtils::ObjectFromArray()повертає об'єкт заданого класу, який буде заповнений значеннями з асоціативного масиву, переданого другим параметром.

Не сперечаюся, можливо, комусь цей код може чимось не сподобатися, зате він чудово справляється з побудовою дерев меню, всього за 1 запит до БД.

Хардкорна конфа за С++. Ми запрошуємо лише профі.