PHP/HTML: einfache und doppelte Anführungszeichen

Wenn ein PHP-Programmierer einen Link aus Variablen erstellt, kann man häufig folgenden Code sehen:

echo '<a href="' . $link . '" id="' . $id .'" class="' . $class . '">' . 
       $linktext . '</a>';

oder

?>
<a href="<?php echo $link; ?>" id="<?php echo $id; ?>" 
   class="<?php echo $class; ?>"<?php echo $linktext; ?>"</a>
<?php

oder

echo "<a href=\"$link\" id=\"$id\" class=\"$class\">$linktext</a>";

Abgesehen vom persönlichen Stil des Programmierers haben die Code-Beispiele eines gemeinsam: sie sind schlecht zu lesen.
„Klar!“, werden jetzt die Programmierer sagen, „In HTML müssen die Attribute in doppelten Anführungszeichen stehen und in PHP muss man eine der oben gezeigten Methoden verwenden“. Sicher? Müssen Attribute wirklich in doppelten Anführungszeichen stehen? Die einfache Antwort ist: Nein!
Ein Blick in die Spezifikation bringt Folgendes an den Tag:

[…]Standardmäßig verlangt SGML, dass alle Attributwerte entweder von doppelten Anführungszeichen (ASCII dezimal 34) oder einfachen Anführungszeichen (ASCII dezimal 39) begrenzt werden. Einfache Anführungszeichen können im Attributwert enthalten sein, wenn der Wert durch doppelte Anführungszeichen begrenzt ist und umgekehrt.[…]

Doppelte oder einfache Anführungszeichen. Das macht die Sache doch viel übersichtlicher:

echo "<a href='$link' id='$id' class='$class'>$linktext</a>";

Wie man sieht ist der Code viel leichter zu lesen und das, weil man einfach die Spezifikation gelesen hat.

3 Gedanken zu „PHP/HTML: einfache und doppelte Anführungszeichen“

  1. printf( '<a href="%1$s" id="%2$s" class="%3$s">%4$s</a>', $link, $id, $class, $linktext);
    Sollte man sich aus zwei Gründen angewöhnen:
    1. „%s – Der Wert wird als String interpretiert und als String ausgegeben“. Man kann sich also sicher sein das eine Variable als das ausgegeben wird, als die sie vorgesehen war. Wird ein Integer anstatt eines Strings übergeben, ist es noch nicht so tragisch. Aber wenn ein String anstatt eines Integers übergeben wird, kann das schon doof sein. $width=300; $height="schröder"; $text=3; echo "<div style="width:$widthpx heigth:$heigthpx">$text"</div>"
    An dem Beispiel sieht man dann auch schon die zweite Falle die sich mit printf vermeiden lässt. Denn die Variablen „$widthpx“ und „$heigthpx“ gibt es nicht. Man müsste die Werte erst in Strings umwandeln, ein „px“ anhängen und dann ausgeben. Mit printf schreibt man einfach „%dpx“

    2. Wenn eine Variable mehrmals verwendet wird, muss man sie nur einmal auflisten. Das erhöht die Übersichtlichkeit enorm da die Code-Zeile erheblich kürzer ausfällt.

    Manch einer kommt nicht damit zurecht das die Variablen hinten stehen und vorne nur Platzhalter. Für gewöhnlich mache ich nach dem Komma einen Zeilenumbruch, so dass die Variablen unter den Format-String stehen. Das lässt sich recht gut lesen und man sieht recht schnell wo welche Variable landet.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.