mermshaus: Ergänzung zu letztem Post

Beitrag lesen

Ich habe hier…

render('layout', array(
    'title'   => 'Homepage',
    'content' => render('index', $vars)
));

…beim Schreiben aus dem Kopf ein wenig Mist gebaut (und kann nicht mehr editieren). Das funktioniert so nicht, weil render direkt Ausgabe generiert, hier aber einen String liefern müsste.

Schneller Fix:

ob_start();
render('index', $vars);
$content = ob_get_clean();

render('layout', array(
    'title'   => 'Homepage',
    'content' => $content
));

Dann stimmt auch die Aussage weiter unten nicht mehr, dass der Code ohne Output-Buffering auskommt. (Man kann das prinzipiell aber entsprechend arrangieren, wenn man etwas mehr Infrastruktur baut und Closures oder Objekte nutzt, die dann immer erst bei Bedarf nach HTML gerendert werden. Das ist meines Erachtens aber wie gesagt nicht unbedingt eine Eigenschaft, die zwingend erstrebenswert ist.)