Der Vision Menü Namespace setzt sich im wesentlichen aus 2 Komponenten zusammen, welche in einem Controller gesteuert werden.
Der namespace soll die Funktionalität der alten menubuild function ersetzen und in Teilbereiche aufgliedern. Die beiden Teilbereiche sind mit integrationstests mit PESTphp gedeckt.
Falls es hierbei zu Fehlern kommt, wenn sich z.B die Implementierung verändert hat, sollte man hier ein paar Mocks verwenden, sodass die Abhängigkeiten der Tests gelöst werden.
Der Controller vereint die Funktionalitäten beider Teilbereiche und steuert sie. Hierbei wird ein Cachesystem für jedes Menü und jede Sprache verwendet.
Wenn ein anderes Menü gezeigt werden soll, muss die Funktionalität hier angepasst werden, da nach aktuellen Stand nur das Hauptmenü eingepflegt werden kann. Durch Abstraktion soll es allerdings möglich sein, weitere Menü Objekte zu erstellen.
Die Menu Factory baut das HTML für das entstehende Menü und stellt dem Controller den HTML Quellcode zur Verügung. Das Objekt ist Abhängig von dem Seitenbaum und einer Menükonfiguration.
Verändern sich die Abhängigkeiten wie der Seitenbaum oder das Konfgurationsobjekt sieht folgerichtig auch das Menü anders aus. Zum Erweitern der Menu Factory bietet es sich an entweder eine möglichst flache Vererbungsstruktur zu nutzen, damit die display children Methode überschrieben werden kann oder (bevorzugt) wird eine Komposition verwendet (Eine Klasse, welche eine andere Klasse in sich aufnimmt ).
Hier wirst du fündig, wenn du schnell eine Vision übernahme machen möchtest. Du findest hier die Bootstrap Klassen, die du brauchst.
Wenn das Menü bei der Übernahme eine eigene Struktur verwendet, musst du die displayChildren Methode aus der Menu Factory Klasse erweitern.
Diese Klasse nimmt eine Liste aller Seiten entgegen und baut daraus einen Seitenbaum, mit dem die Menüfabrik weiter arbeiten kann.