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. ?>
Wobei die <?php
und schließend ?>
in jeder einzelnen Zeile stehen, auch wenn kein dazwischenliegender HTML-Code vorhanden ist.
Meine Frage lautet: Warum? Warum all diese zusätzlichen Tags einschließen?
Mir scheint, diese Konvention fügt dem Code eine erhebliche Menge an Unordnung hinzu, es ist ärgerlich, sie 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.
php
theme-development
customization
Indigenität
quelle
quelle
Antworten:
Dies wird in keinem WordPress-Styleguide empfohlen, und ich denke, es ist ein schlechter Codierungsstil. Anfänger verwenden diesen Stil, vielleicht weil er sich eher 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:
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 tatsächlichen PHP-Codes enthält.
Wenn Sie mit HTML beginnen und Schritt für Schritt kleine Teile von PHP hinzufügen, werden Sie möglicherweise den Stil finden, den wir hier diskutieren. Hier kommt das 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 Leute sind glücklich ohne diesen letzten Schritt, und deshalb wird dies nicht bald sterben.
quelle
<? ... ?>
, um das Verschachteln verständlicher zu machen. Eine Sache, die ich anders machen würde als das Beispiel des OP, ist, dass ichthe_post();
eine eigene Linie aufstellen würde .Während ich dies für PHP-Kommentare vermeide, bin ich ein begeisterter PHP-Öffner / Schließer in Vorlagendateien. Die Alternative ist das Echo von HTML über PHP-Strings, was meiner Meinung nach noch schlimmer aussieht. Als primitives Beispiel:
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.
Auch nur als Randnotiz: Verwendung
endforeach
undendif
beim Schreiben von HTML zwischen PHP - Logik Verstärkt Lesbarkeit einer Tonne im Vergleich zu}
.quelle
}
over istendif
jedoch, dass Sie (in vielen Editoren) leicht erkennen können, wo sich die Öffnung{
befindet und ob daher alles ordnungsgemäß geschlossen wurde. Versuchen Sie, das mitendif
und einer ganzen Reihe von Bedingungen herauszufinden ...foreach ( $list_items as $list_item ) printf( '<li><a href="%1$s">%2$s</a></li>', $list_item->url, $list_item->name );
- zwei Zeilen, HTML und PHP gut getrennt. : P<? ... ?>
und<?= ... ?>
.endif
in anständigen Editoren hervorzuheben .Hier geht es um die Wahl zwischen dem Anzeigen der Seite als:
Verschiedene Leute neigen dazu, anders darüber zu denken. Beachten Sie, dass Funktionen diesen Stil 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 höher sein kann als die von PHP.
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 eine vernünftige Einbettung von PHP in HTML handelt, und nicht um das wörtliche Öffnen und Beenden von Tags in jeder Zeile.
quelle
Die Antwort ist ziemlich einfach: Publikum. Wenn Leute (keine Programmierer) ein Thema greifen, dann fühlen sich FTP-Ups ihrer Installation, das Ausführen des 5-Minuten-Setups und so weiter schon danach, für sie zu programmieren. Wenn sie dann eine einzelne Zeile eines beliebigen Themas hinzufügen oder ändern möchten , haben sie möglicherweise bereits herausgefunden, was HTML ist. PHP wird immer noch weit außerhalb ihrer Reichweite sein. Ich vermute also, 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.
quelle
Ich habe festgestellt, dass einige neue Programmierer auf diese Weise ausgebildet werden. Ich folge einem 40-stündigen Kurs über Lynda und der Kursleiter löscht PHP-Tags in jeder Zeile, 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.
quelle