Best Practice für PHP


11

Wenn Sie eine Vorlage wie single.php erstellen und PHP in HTML verpackt haben, ist es am besten:

  1. PHP starten + stoppen? beispielsweise

     <h1 class="post-tilte"><?php the_title(); ?></h1>
     <p class="post-content"><?php the_content();?></p>

Oder

  1. Echo HTML und Escape PHP? Zum Beispiel -

    <?php echo '<h1 class="post-title">' . get_the_title() . '</h1>
    <p class="post-content"' . get_the_content() . '</p>

Ich habe keine bevorzugte Wahl und finde mich dabei, beides zu tun, nur neugierig, einige Gedanken zu hören


6
Die erste Methode ist designfreundlicher. Wenn Sie also Vorlagen mit viel HTML und ein wenig PHP verwenden, machen Sie die erste. Der zweite ist nützlich, wenn es viel PHP und ein bisschen HTML gibt. Mach es in functions.phpoder Plugins etc.
Fayaz

3
Du hast vergessen, dass es auch gibtprintf( '<h1 class="post-title">%s</h1>', get_the_title() );
Howdy_McGee

Antworten:


10

Diese Frage ist nur relevant, weil WordPress eine Mischung aus einer Codierungssprache und einer Layoutsprache verwendet. Wenn Sie eine Vorlagensprache oder Syntax verwenden würden, ist dieses Thema nicht relevant. Aber zu deiner Frage. Wenn Sie Ihre Beispielquelle für ein Thema verwenden, viel mehr Layoutsprache wie HTML, dann bevorzuge ich die erste - sie ist für Designer und Benutzer viel besser lesbar, dort muss das Markup gelesen werden. Es ist einfacher, eine Übersicht über das Markup zu erstellen, die offenen und schließenden Tags usw. zu haben.

Für die Include-in-Plugins ist Code mit mehr Logik und Fluss das zweite Beispiel, das einfacher zu implementieren ist. Das Hauptthema ist PHP, nicht Markup und dies sollte in der Quelle sichtbar sein. Dies ist auch ein Punkt, über den Sie nachdenken sollten, um dieses Markup in Vorlagendateien auszuschließen und das Markup von der Logik zu trennen.


1
Ein weiterer Vorteil des ersten ist, dass bestimmte Editoren das entsprechende öffnende oder schließende Tag hervorheben, wenn Sie den Cursor darauf platzieren. Letzteres unterbricht jedoch normalerweise diese Bequemlichkeit.
MonkeyZeus


5

Wie in der obigen Antwort erläutert, ist die erste Methode designfreundlich und die zweite Methode eignet sich möglicherweise für Plugins und komplexe PHP-Codes, bei denen nur wenige HTML-Tags vorhanden sind.

Aber die meisten WordPress-Template-Tags haben beforeund afterParameter und es ist besser geeignet, Ihre HTML-Codes innerhalb des Funktionsaufrufs zu verwenden.

Zum Beispiel the_titlehat es drei Parameter

the_title( $before, $after, $echo );

Sie können Ihren HTML-Code vor und nach den folgenden Parametern übergeben

the_title( '<h2 class="title">', '</h2>', true );

Die Vorteile dieser Methode sind

  • Designer freundlich
  • druckt keine HTML-Tags aus, wenn der Titel leer ist
  • kann sowohl in komplexen PHP-Codes als auch in einfachen Vorlagendateien verwendet werden

0

Die erste Methode ist vorzuziehen, weil:

  • Das feste HTML-Layout wird klar vom dynamischen Inhalt getrennt.
  • Es ist leichter zu lesen.
  • Die Syntaxhervorhebung wird in den meisten Editoren besser unterstützt, da die HTML-Attribute in der Zeichenfolge normalerweise nicht erkannt werden.
  • Es verhindert, dass Sie HTML und PHP zu leicht miteinander vermischen.

Aus den oben genannten Gründen führt die erste Methode zu Code, der leichter zu verstehen und damit leichter zu warten ist.

Nach meiner Erfahrung kann es in einigen Situationen bequemer erscheinen, die zweite Methode zu verwenden. Dies ist jedoch normalerweise auf ein schwaches (Software-) Design zurückzuführen und sollte als Warnzeichen angesehen werden.


0

Ihr Codebeispiel ist marginal, weil es nur zwei Codezeilen zeigt, aber ich glaube, die Gesamtantwort ist ziemlich situativ. Wenn Sie eine PHP-Zeile in einem HTML-Block verwenden, verwenden Sie die erste Methode. Wenn Sie eine HTML-Zeile innerhalb eines PHP-Blocks verwenden, wählen Sie die zweite.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.