Hierarchická struktura dat
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- michal.simon
- Člen | 3
Ahoj, nejsem žádný PHP ani Nette guru, ale už několikrát jsem potřeboval pracovat se stromovou strukturou dat načtenou z databáze sestavenou podle sloupečků id a root_id a rozhodl jsem se napsat pro to svoji třídu/y. Rád bych Vás požádal o nějakou kritiku, co je tam špatně a co tam třeba chybí.
Cílem je tedy zpracovat tabulku z databáze se zmíněnými sloupečky a provádět s daty základní operace.
https://github.com/…im/Hierarchy
Budu vděčný za každou připomínku a pokusím se případné chyby co
nejdříve opravovat.
Díky
- Jan Endel
- Člen | 1016
Čau Michale,
několik připomínek:
- Každá třída by měla mít svůj soubor
- místo opakování if (empty($this->tree)) používej jen getTree – neduplikuješ kód
- Hiearchy node je ideální kandidát na Implementování nějakého interface (kterou pak může Hiearchy vyžadovat)
- v konstruktoru hiearchyNode $info – wtf? to je stdClass? Doplnit typovost
- všeobecně odkazování na parenta generuje neuvěřitelné množství dotazů – zkus se podívat na http://blog.voracek.net/…rochu-jinak/
- michal.simon
- Člen | 3
Moc díky za připomínky!
- Rozdělil jsem vše do souborů.
- Tahle podmínka se mi taky moc nelíbí, ale udělal jsem ji kvůli tomu „lazy“ sestavování stromu. Nejsem si jistý, jestli jsem Tě správně pochopil, mohl bys to zkusit prosím trochu rozvést?
- Doplnil jsem interface.
- V readme je zakomentovaná varianta toho, jak to tahám z DB, ale protože to pokaždé vrací jiný objekt, nedal sem tam nic. Co bych tam měl doplnit aby fungovaly obě varianty?
- Díky. Ve článku je spousta užitečných informací. Popřemýšlím jak to zužitkovat tady.