Comments 34
У вас нельзя загрузить ветку дерева — всегда выгребается всё меню. Да и вообще тут очень специфический пример использования дерева. В любом случае, спасибо.
0
По моему не хватает комментов в коде для тех, кто в танке.
+1
А самообъединения использовать совсем не вариант?
0
Собственно, вот: dev.mysql.com/tech-resources/articles/hierarchical-data.html
> остальные же, деревья строили с кучей запросов к БД, но я верил что есть способ построить сколь угодно огромное дерево всего в 1 запрос,
Вы перенесли логику в код, вместо БД, только и всего.
> остальные же, деревья строили с кучей запросов к БД, но я верил что есть способ построить сколь угодно огромное дерево всего в 1 запрос,
Вы перенесли логику в код, вместо БД, только и всего.
+4
Чем не устроил вариант с materialized path для постороения дерева меню?
+1
торжественно заявляю: Существует куча способов построения деревьев.
Надо было не торжественно заявлять а сделать сравнительный анализ, рассказать про другие методы, чем они вас не устроили, и как эти проблемы решены в вашем методе, а не делать топик, состоящий из одной портянки без единого комментария
+2
Тут народ въедливый! Деревьями никого не удивить.
0
Жизнь циклична и каждый раз кто-то открывает для себя сто лет как изученное и описанное, выдавая это за какое-то открытие. Мой вам совет, ознакомьтесь с Nested Sets, они лишены всех неудобств вашего способа.
Например: php.russofile.ru/ru/authors/sql/nestedsets01/
Например: php.russofile.ru/ru/authors/sql/nestedsets01/
0
Видите ли в чем дело. Я такой человек, который предпочитает изначально изобрести свой велосипед, вместо того, чтобы использовать что-то уже кем то придуманное или изобретенное. Я не всегда считаю, что мой велосипед получится более легким и удобным чем тот, что уже кем то изобретен и построен, но зато я буду знать принцип его работы, а это опыт.
Меня откровенно бесит, что когда появляется какая то технология, или язык, появляются те, кто начинают орать что-то типа «пока не появится фреймворк, я это использовать не буду!».
Каждому свое короче)
Меня откровенно бесит, что когда появляется какая то технология, или язык, появляются те, кто начинают орать что-то типа «пока не появится фреймворк, я это использовать не буду!».
Каждому свое короче)
0
причем тут фреймворк? я вполне понимаю желание изобрести свою реализацию чего-либо, но какой смысл переизобретать давно известный алгоритм? особенно когда он отлично реализован несколькими способами? ладно, когда вы делаете это в свободное время, а многие умудряются свои амбиции за счет рабочего времени реализовывать, что печально
+1
в целях саморазвития)
0
Ну так саморазвивайтесь, зачем тратить чужое время, публикуя статью?
А в целях саморазвития может быть полезнее разобраться в чем-то существующем, чем изобретать велосипед в вакууме. Ведь чтобы изобретать не велосипеды, а хорошие полезные вещи, нужно владеть информацией о том, как все устроено, как задачу принято решать сейчас. И уже осмысленно к вопросу подходить.
Не стоит строить иллюзий о том, что изобретение своих велосипедов в вакууме — это учеба и развитие. Это просто способ потешить свое эго и «срезать углы». Конечно, разобраться в алгоритмах и общепринятых подходах, получить новые знания — это сложнее, чем сделать очередную недоделку. Сложнее по многим причинам: придется научиться читать код, например. Если знания есть, то другое дело, вперед: реализуйте другие подходы (понимая, чем они лучше или хуже, в каких ситуациях больше подходят), улучшайте, упрощайте.
Аргументация на уровне «я сделал это для саморазвития, т.к. не люблю использовать уже придуманное» — равносильна «я не разбираюсь в вопросе, о котором пишу, а значит потратил ваше время впустую, но ни капли об этом не сожалею».
Извините уж, если это все звучит грубо, вы можете быть отличным человеком, но вопрос тут технический.
А в целях саморазвития может быть полезнее разобраться в чем-то существующем, чем изобретать велосипед в вакууме. Ведь чтобы изобретать не велосипеды, а хорошие полезные вещи, нужно владеть информацией о том, как все устроено, как задачу принято решать сейчас. И уже осмысленно к вопросу подходить.
Не стоит строить иллюзий о том, что изобретение своих велосипедов в вакууме — это учеба и развитие. Это просто способ потешить свое эго и «срезать углы». Конечно, разобраться в алгоритмах и общепринятых подходах, получить новые знания — это сложнее, чем сделать очередную недоделку. Сложнее по многим причинам: придется научиться читать код, например. Если знания есть, то другое дело, вперед: реализуйте другие подходы (понимая, чем они лучше или хуже, в каких ситуациях больше подходят), улучшайте, упрощайте.
Аргументация на уровне «я сделал это для саморазвития, т.к. не люблю использовать уже придуманное» — равносильна «я не разбираюсь в вопросе, о котором пишу, а значит потратил ваше время впустую, но ни капли об этом не сожалею».
Извините уж, если это все звучит грубо, вы можете быть отличным человеком, но вопрос тут технический.
+3
// если $return_as_list == true возвращаем меню в виде обычного списка
if(is_bool($return_as_list) && $return_as_list)
Может быть так?
if(TRUE === $return_as_list)
И дальше
// иначе, если $return_as_list == false возвращаем дерево меню
else if(!$return_as_list)
у вас переменная может быть и NULL, и 0, и ''.Советую быть внимательнее с приведением типов.
+1
Человек хочет изобрести всё самостоятельно. Это всё равно что не ходя в школу самому изобретать сложение/произведение/степень/диффуры/интегралы. А потом на хабре писать что-то вроде:
Уау! Я изобрёл способ который позволяет прибавить одно и тоже число несколько раз. Я назвал его мульти-сложением. С его помощью можно легко вычислить площадь прямоугольника! Это мой ответ тому челу, который изобрёл многократное-сложение. Под катом табличка 10х10.
Уау! Я изобрёл способ который позволяет прибавить одно и тоже число несколько раз. Я назвал его мульти-сложением. С его помощью можно легко вычислить площадь прямоугольника! Это мой ответ тому челу, который изобрёл многократное-сложение. Под катом табличка 10х10.
+6
Автор, а Вам не кажется, что сначала надо поднять уровень кодинга и оформления самого кода, прежде чем постить такие шедевры на Хабр?
А если слегка подумать, то не надо быть гением, что бы заведомо определить судьбу данного поста.
Век живи — век учись.
А если слегка подумать, то не надо быть гением, что бы заведомо определить судьбу данного поста.
Век живи — век учись.
+1
И что же Вас конкретно в моем уровне кодинга не устроило?
0
Не правильное оформление phpDoc.
О тернарных операторах, вы, наверное, вообще не слышали?
Эта конструкция вообще убила… No comments
О правилах именования приватных и защищённых методов вы также не знаете
Почему в одном случае у вас нет пробела перед аргументом, а дальше есть?
Настоятельно рекомендую пересмотреть паровоз из if, else if, else. Вы слышали о switch/case?
В полной же совокупности на код противно смотреть.
Я достаточно привёл аргументов.
@param int Id ленты меню для загрузки
О тернарных операторах, вы, наверное, вообще не слышали?
if($levels == null)
{
$a[] = $item;
}
Эта конструкция вообще убила… No comments
if(is_bool($return_as_list) && $return_as_list)
О правилах именования приватных и защищённых методов вы также не знаете
private function GetMenuChilds($p_id, $menuList, $levels = null)
Почему в одном случае у вас нет пробела перед аргументом, а дальше есть?
$this->GetMenuChilds(0,$ml, $return_as_list);
Настоятельно рекомендую пересмотреть паровоз из if, else if, else. Вы слышали о switch/case?
В полной же совокупности на код противно смотреть.
Я достаточно привёл аргументов.
+1
>>Эта конструкция вообще убила… No comments
>>if(is_bool($return_as_list) && $return_as_list)
Что здесь такого криминального?
>>О правилах именования приватных и защищённых методов вы также не знаете
Не знаю, расскажите?
>>Почему в одном случае у вас нет пробела перед аргументом, а дальше есть?
>>$this->GetMenuChilds(0,$ml, $return_as_list);
А почему некоторые люди, а возможно и вы говорите не фольклор а фольклёр? :)
>>Настоятельно рекомендую пересмотреть паровоз из if, else if, else. Вы слышали о switch/case?
Более того, я их даже использую.
В полной же совокупности навязывать своё мнение — плохой тон.
Я пишу так, как мне удобно. Код вполне читаем.
>>if(is_bool($return_as_list) && $return_as_list)
Что здесь такого криминального?
>>О правилах именования приватных и защищённых методов вы также не знаете
Не знаю, расскажите?
>>Почему в одном случае у вас нет пробела перед аргументом, а дальше есть?
>>$this->GetMenuChilds(0,$ml, $return_as_list);
А почему некоторые люди, а возможно и вы говорите не фольклор а фольклёр? :)
>>Настоятельно рекомендую пересмотреть паровоз из if, else if, else. Вы слышали о switch/case?
Более того, я их даже использую.
В полной же совокупности навязывать своё мнение — плохой тон.
Я пишу так, как мне удобно. Код вполне читаем.
0
Я уже предложил и отметил явную неграмотность написания кода.
Не моё дело заниматься обучением кого-либо здесь.
Если человек не дурак и готов совершенствоваться, но он сам определит для себя пути развития.
На хабре более чем достаточно полезных постов от умных людей, не говоря уже о комментах.
Не поленись изучить эти моменты.
У меня всё.
Не моё дело заниматься обучением кого-либо здесь.
Если человек не дурак и готов совершенствоваться, но он сам определит для себя пути развития.
На хабре более чем достаточно полезных постов от умных людей, не говоря уже о комментах.
Не поленись изучить эти моменты.
У меня всё.
0
Я лично не считаю, что случайные пропуски пробелов, названия методов с большой буквы, и ошибка в описании одного метода говорят о грамотности кода. Люди ошибаются, я не верю, что Вы все всегда делаете правильно)
В слюбом случае, спасибо, и успехов Вам, а я поехал на природу)
В слюбом случае, спасибо, и успехов Вам, а я поехал на природу)
0
А, потом, другие программисты сидят и исправляют «случайно» криво-написанный код. Скрипты случайно тормозят сервер, случайно проходят SQL инъекции, XSS и т.д. А клиент, случайно недоволен, что сайт работает случайно через жопу. Случайно обращается в другую контору или фрилансеру и говорит, что случайно заплатил кучу бабок за это опять же случайное «говно». А ему отвечают: Это не случайно, а закономерно.
Сегодня ты пробел забыл поставить, а завтра родине изменишь?! :)
P.S: свою работу надослучайно любить, делать её качественно, совершенствоваться и уметь воспринимать критику, особенно, когда делают замечания по-существу. Не зря ваш пост случайно заминусовали. Или вы думаете, что здесь сидят уроды и отщепенцы, у которых так и чешутся руки, что бы кому-нибудь насовать минусов?
Сегодня ты пробел забыл поставить, а завтра родине изменишь?! :)
P.S: свою работу надо
0
Sign up to leave a comment.
Мой взгляд на деревья в PHP