1unitedpower: Projektvorstellung: Teein/Html eine Virtual DOM basierte Templating Engine für PHP 7.1

Beitrag lesen

problematische Seite

Moin moin,

$table = viewTable([
    ['Lorem', 'ipsum', 'dolor'],
    ['sit', 'amet', 'consetetur'],
    ['sadipscing', 'elitr', 'sed']
]);

vermutlich erschafft das eine 3x3-Tabelle:

|Lorem|ipsum|dolor |sit|amet|consetetur |sadipscing|elitr|sed

Korrekt.

Wie macht man das mit Tabellenüberschriften dazu?

Da gibt es viele Möglichkeiten, naheliegend ist es den View-Helper mit einem zusätzlichen Parameter für die Überschrift auszustatten:

function viewTableWithCaption(string $caption, array $table) : Element
{
    return table()(
        caption()(text($caption)),
        ...array_map('viewRow', $table)
    );
}

Um den View-Helper mit Leben zu füllen, übergibt man ihm beim Aufruf die passende Überschrift und die tabellarischen Daten:

$table = viewTableWithCaption(
    'Hello World',
    [
        ['Lorem', 'ipsum', 'dolor'],
        ['sit', 'amet', 'consetetur'],
        ['sadipscing', 'elitr', 'sed']
    ]
);

An dem Beispiel lässt sich auch gut verdeutlichen, dass sich Teein/Html-Templates leicht wiederverwenden lassen: Statt viewTable musste man eine neue Funktion viewTableWithCaption schreiben, die View-Helper viewRow und viewColumn werden beide wiederverwendet. viewRow explizit, viewColumn implizit, da er von viewRow benutzt wird. Und man musste keinen bestehenden Code verändern.