برای یکی از سایتها یک منو باید می ساختم که تعداد نا محدود پدر و فرزند داشته باشد . یک کلاس ساختم که یک collection داشت از مدل خودش که وقتی از ToString برای کلاس اصلی استفاده می کرد می آمد به شکل بازگشتی تمام collection ها رو سیر می کرد و منو رو می ساخت .
گفتن که باید وقتی در یک صفحه ای می رویم در منو آن صفحه باز بماند . منو هم با javascript باز و بسته می شود . یک راهش استفاده از cookie در جاوااسکریپ بود که وقتی بیننده در منو می گردد cookie رو set کنه و وقتی می خواهد نشان دهد آن صفحه ای که باز است را باز نشان دهد . اما وقتی در یک browser دیگه ببیند دیگر آن صفحه باز نیست .
یک راه دیگه هم این بود که وقتی منو ساخته شد یک array از parent های یک ID بسازد و در کل منو گره هایی که id ش با parent یکی بود را نمایش دهد . که ساختن آن array می شد یک select تو در تو و پدر ِ sql رو در آورد .
آخر سر بهترین راه این شد که توی class یک property ِ دیگه بزارم و وقتی برگ های منو رو می سازم اگر id صفحه با id ِ منو یکی بود آن property رو true کنم . وقتی می خواهم گره را به پدرش اضافه کنم collection فرزندانش رو چک کنم ، اگر یکی از آنها property ش true بود آن گره را هم true کنم و این بره برسه تا منوی اصلی .
OO همیشه هم مزخرف نیست !