dedlfix: Warum wird ein zeilenumbruch gemacht ??

Beitrag lesen

Hi!

$ersatz = sprintf(
    "\t<p%s>%s</p>\r\n",
    $lh_noetige_arzt > $result_ar_arbeiter['arzt'] ?
        ' class="offline"' : ' class="online"',
    htmlspecialchars($lh_noetige_arzt)
);

DRY (Don't repeat youself): Der Teil ' class="' und das abschließende " sind in jedem Fall vorhanden, also kann man sie gleich in das p-Element notieren und muss nur noch offline/online einfügen lassen.

Meinem Vorschlag liegt die Erkenntnis zugrunde, dass das Trennen von HTML-Code und Programm-Code in vielen Fällen sinnvoll ist.

Und warum machst du das dann nur halbherzig? Konsequent wäre, das p-Element inklusive Attribut ins HTML zu stellen und darin zwei Patzhalter unterzubringen, einen für offline/online, einen für den nötigen Arzt. Und nur die Inhalte der Platzhalter erstellt man im V(erarbeitung)-Teil eines nach EVA-Prinzip aufgebauten Scripts. Dann muss man sich auch nicht im V-Teil Gedanken um Einrückungen und Zeilenumbrüche im HTML-Code machen.

Einen Mechanismus für die Beachtung des Kontextwechsels sollte man auch noch implementieren. Der gehört zum A(usgabe)-Teil und hat nichts im V-Teil zu suchen. Meine Vorgehensweise ist, die sowieso schon in PHP enthaltenen Template-Fähigkeiten direkt zu nutzen und nicht noch zusätzliche Platzhalter und Code für deren Ersetzung einzubauen.[*] Ausgaben werden nicht mit "echo htmlspecialchars(...);" sondern über eine kurznamige Hilfsfunktion h(...)

function h($string, $already_encoded = false) {
    echo $already_encoded ? $string : htmlspecialchars($string);
  }

[*] Platzhalter sehe ich dann als sinnvoll an, wenn man den HTML-Code jemanden erstellen lässt, der sich schwerer tut, PHP-Code statt Platzhaltern einzufügen.

Lo!