Warum sollte man Programmroutinen am zu erzeugenden Markup orientieren?!
Das tun meine Methoden nicht. Sie laden höchstens ein bestimmtes Template und welches das ist, bestimmt entweder die Konfiguration oder die Klasse. Vielmehr definieren die Methoden den Zugriff auf die in das Template zu rendernden Daten (die in einem abstrakten Datentyp vorliegen). Auch die Konfiguration ist ein abstrakter Datentyp.
Wie dedlix schon schrieb: "render" und gut ists.
Nein. Code wird aufgeteilt, schon allein der Übersicht wegen. Beispielsweise greift menu() auf eine Array-Referenz, eine einzelne Eigenschaft der Instanz. start_html() hingegen kann den Inhalt auch von einer per Konfiguration festgelegten anderen Methode laden.
Jede Methode gibt seinen Return-String sukzessive in den Ausgabepuffer. So kann jede Methode auch recht einfach mit einem '' beendet werden, falls das so konfiguriert ist.
Insbesondere beim multi-Domain-Betrieb kann es ja auch erhebliche Abweichungen im Layout geben was ebenfalls für mehr Code-Strukturierung spricht. Und Template-Bereiche bestimmten Methoden zuzuordnen habe ich auch in anderen Framewoks gesehen z.B. bei Magento.
Welche Variablen an welcher Stelle mit welchem Markup ausgegeben werden sollte das Template bestimmen.
Ja natürlich was denn sonst.