Ich finde, die Menü-Klasse ist bei CL zu umständlich implementiert.
Auch performancehalber ist mir die Klasse ein Dorn im Auge.
Zwar wird alles schön gecacht, aber trotzdem ist die Abfrage, wenn der Cache leer ist, noch ein wenig performancelastig, und auch nicht erweiterbar.
Ich würde die Tabellen menu und pages m.H. von Relationen verbinden und nur 1 Abfrage durchführen.
Bzw. ein paar weitere, wenn es Untermenüs gibt, aber nicht bei jedem Menü-Punkt 1-2 Abfragen, wie jetzt, das ergibt bei 20 Menüs 20 (!) Abfragen!
Evtl. wäre es auch gut, das Menü in einem Array zu speichern, dieses Array zu cachen und dann beim Laden den Code neu zu schreiben.
So könnte man m.H. von Events Menüpunkte hinzufügen.