wake-up-neo.net

Warum in jeder Zeile <? Php und?>?

Ich habe diese Konvention so ziemlich überall gesehen, und manchmal ist es beinahe verrückt geworden:

<?php //The loop ?>
<?php while ( have_posts() ) : the_post(); ?>
    <?php the_content(); ?>
<?php endwhile; // end of the loop. ?>

Wo sich der <?php und der schließende ?> in jeder einzelnen Zeile befinden, auch wenn kein HTML-Code dazwischen liegt.

Meine Frage ist: Warum? Warum all diese zusätzlichen Tags aufnehmen?

Mir scheint, diese Konvention fügt dem Code eine beträchtliche Menge an Unordnung hinzu, es ist ärgerlich, sie an erster Stelle zu befolgen, und sie fügt hinzu, dass viele weitere Stellen versehentlich ein öffnendes oder schließendes Tag weglassen.

HINWEIS

Dies ist Code aus dem Twenty-Twelve-Theme, das Beispiel von WordPress.

24
Indigenuity

Dies wird in keinem WordPress-Styleguide empfohlen, und ich denke, es ist ein schlechter Codierungsstil. Anfänger verwenden diesen Stil, vielleicht weil er sich mehr wie HTML anfühlt ...

Leider wird dieser Stil von den Standardthemen viel zu oft verwendet, sodass einige Anfänger glauben, dass er Teil eines Codestils ist.

Ein Nachteil dieses Stils ist die Behandlung von Kommentaren. Schauen Sie sich das folgende Beispiel genau an und wie es nicht das tut, was der Autor erwartet:

<?php echo 'Important: '; // announcement ?>
<?php echo ' enter the Word '; /* start ?>
<?php echo '<b>password</b>'; /* the end */ ?>

Viel Glück beim Debuggen. :)

Regel: Wechseln Sie nur dann zwischen PHP und HTML-Kontext, wenn Sie eine Ausgabe in beiden Sprachen erstellen müssen. Verwenden Sie in allen anderen Fällen normale Zeilenumbrüche.

Update, weitere Gedanken: Jede gültige HTML-Datei ist ein vollständiges und gültiges PHP Programm. Ja, auch wenn es keine einzige Zeile aktuellen PHP Codes enthält.

Wenn Sie mit HTML beginnen und Schritt für Schritt kleine Teile von PHP hinzufügen, erhalten Sie möglicherweise den hier diskutierten Stil. Hier kommt Refactoring ins Spiel: Wenn alles wie erwartet funktioniert, schreiben Sie den Code neu, bis er so gut wie möglich lesbar, leicht zu warten und zu erweitern ist, ohne Teile zu wiederholen.

Ich denke, einige Menschen sind glücklich ohne diesen letzten Schritt und deshalb wird dies nicht bald sterben.

20
fuxia

Während ich dies für PHP Kommentare vermeide, bin ich ein begeisterter PHP Öffner/Schließer in Vorlagendateien. Die Alternative besteht darin, HTML über PHP Zeichenfolgen zurückzugeben, was meiner Meinung nach noch schlimmer aussieht. Als primitives Beispiel:

<!-- Example 1 -->
<ul>
    <?php
        foreach ( $list_items as $list_item ) {
            echo "<li><a href='" . $list_item->url . "'>" . $list_item->name . "</a></li>";
        }
    ?>
</ul>

<!-- Example 2 -->
<ul>
    <?php foreach ( $list_items as $list_item ) : ?>
        <li>
            <a href="<?php echo $list_item->url; ?>">
                <?php echo $list_item->name; ?>
            </a>
        </li>
    <?php endforeach; ?>
</ul>

Ist Beispiel 2 ausführlicher? Vielleicht? Aber meiner Meinung nach einfacher zu lesen und zu bearbeiten. Sie können sich vorstellen, wie hässlich es bei komplexem HTML werden kann.

Nur als Randnotiz: Die Verwendung von endforeach und endif beim Schreiben von HTML zwischen Ihrer PHP -Logik verbessert die Lesbarkeit um t im Vergleich zu }.

12
Andy Adams

Hier geht es um die Wahl zwischen dem Anzeigen der Seite als:

  • als vollständig PHP-generierte Entität
  • als HTML-Dokumentvorlage, unterstützt von PHP Vorlagen-Tags

Verschiedene Leute neigen dazu, anders darüber zu denken. Beachten Sie, dass Funktionen diesen Stil nur selten verwenden, da sie sich eher wie reine PHP-Blöcke anfühlen. Auf der anderen Seite ist dies bei Vorlagen nicht ungewöhnlich, da sie über mehrere Dateien verteilt sind und die Menge an reinem HTML leicht größer sein kann als die von PHP in ihnen.

Wenn Sie sich Vorlagen für Engines (Moustache, Twig usw.) ansehen, sehen sie diesem Stil sehr ähnlich, mit der Ausnahme, dass ihre Syntax dazu neigt, die Ausführlichkeit von einfachem PHP zu eliminieren.

PS Ich möchte darauf hinweisen, dass es sich um sane Embedding von PHP in HTML handelt, nicht um wörtlich Öffnen und Beenden von Tags in jeder Zeile, nur um es zu tun .

10
Rarst

Meine Frage lautet: Warum? Warum all diese zusätzlichen Tags einschließen?

Die Antwort ist ziemlich einfach: Publikum. Wenn Leute (keine Programmierer) ein Thema haben, dann fühlen sie sich schon danach, wenn sie ihre Installation per FTP starten, das 5-Minuten-Setup ausführen und so weiter. Wenn sie dann eine einzelne Zeile von was auch immer in ihrem Thema hinzufügen oder ändern möchten, haben sie vielleicht schon herausgefunden, was HTML ist. PHP wird immer noch weit außerhalb ihrer Reichweite sein. Ich gehe davon aus, dass die Idee dahinter ist, das Hinzufügen oder Entfernen von Elementen zu vereinfachen, ohne dass bei Fehlern alles kaputt geht.

Hinweis: Dies ist nicht das, was ich mag, bevorzuge oder empfehlen würde. Es ist genau das, was ich denke, warum dies passiert.

2
kaiser

Ich habe festgestellt, dass einige neue Programmierer auf diese Weise ausgebildet werden. Ich folge einem 40-stündigen Kurs über Lynda und der Kursleiter fügt PHP Tags in jede Zeile ein, mit Ausnahme der Funktionsdefinitionen. Es ist wahrscheinlich, klare Linien zwischen HTML und PHP zu ziehen, was wahrscheinlich neuen Leuten hilft zu verstehen, wo HTML endet und PHP beginnt. Danach ist es wahrscheinlich eine Gewohnheit. Ich fing an, mich selbst darüber zu ärgern und beschloss zu sehen, ob sich jemand beschwerte.

0
Kitt Parker