Wenn sonst in HTML einbetten

74

Was ist der richtige Weg zum Einbetten von else- und elseif-Bedingungen in HTML?

user550265
quelle
Bist du sicher, dass du nicht das Gegenteil meinst?
Ignacio Vazquez-Abrams

Antworten:

160

Ich empfehle die folgende Syntax für die Lesbarkeit.

<? if ($condition): ?>
  <p>Content</p>
<? elseif ($other_condition): ?>
  <p>Other Content</p>
<? else: ?>
  <p>Default Content</p>
<? endif; ?>

Hinweis: Wenn Sie phpdie geöffneten Tags weglassen, muss dies short_open_tagsin Ihrer Konfiguration aktiviert sein . Dies ist die Standardeinstellung . Die relevante bedingte Syntax ohne geschweifte Klammern ist immer aktiviert und kann unabhängig von dieser Anweisung verwendet werden.

Coreyward
quelle
4
In diesem Beispiel fehlt das 'PHP' in den Anweisungen.
Adam Youngers
3
@AdamYoungers Diese werden als short_open_tags bezeichnet, und obwohl Sie mit ihnen möglicherweise nicht vertraut sind, sind sie vollkommen gültig.
Coreyward
4
Ich war mit ihnen nicht vertraut. Ich habe versucht, das oben genannte zu verwenden, und es hat meine Seite beschädigt. Eine schnelle Suche und ich sehe, dass Sie dies in Ihrer php.ini-Datei aktivieren
Adam Youngers
5
Ich würde dringend empfehlen, keine PHP-Short-Tags zu verwenden. Dies kann Verwirrung stiften und zufällige Fehler verursachen, die dazu führen können, dass Entwickler sich die Haare ausreißen.
NateAGeek
2
@NateAGeek Sie können sie gerne nicht verwenden, aber eine 5 Jahre alte Antwort ist nicht erforderlich.
Coreyward
44
<?php if ($foo) { ?>
    <div class="mydiv">Condition is true</div>
<?php } else { ?>
    <div class="myotherdiv">Condition is false</div>
<?php } ?>
Tyler Treat
quelle
22

In der Antwort von @Patrick McMahon ist der zweite Kommentar hier ( $ first_condition ist falsch und $ second_condition ist wahr ) nicht ganz korrekt:

<?php if($first_condition): ?>
  /*$first_condition is true*/
  <div class="first-condition-true">First Condition is true</div>
<?php elseif($second_condition): ?>
  /*$first_condition is false and $second_condition is true*/
  <div class="second-condition-true">Second Condition is true</div>
<?php else: ?>
  /*$first_condition and $second_condition are false*/
  <div class="first-and-second-condition-false">Conditions are false</div>
<?php endif; ?>

Elseif löst aus, ob $ first_condition wahr oder falsch ist, ebenso wie zusätzliche elseif- Anweisungen, wenn mehrere vorhanden sind.

Ich bin kein PHP-Experte, daher weiß ich nicht, ob dies der richtige Weg ist, um zu sagen , ob dies oder das sonst so ist oder ob es einen anderen / besseren Weg gibt, es in PHP zu codieren, aber dies wäre eine wichtige Unterscheidung für diejenigen, die danach suchen OP-Bedingungen versus ELSE-Bedingungen.

Quelle ist w3schools.com und meine eigene Erfahrung.

Funkelt
quelle
Bist du sicher? Habe es gerade getestet mit: if(true){ echo 'here';} elseif (true){ echo 'second';} else { echo 'whaddup';}exit;Ausgabe: "hier" Auf PHP 5.5
Philipp
3
 <?php if (date("H") < "12" && date("H")>"6") { ?>
   src="<?php bloginfo('template_url'); ?>/images/img/morning.gif" 
 <?php } elseif (date("H") > "12" && date("H")<"17") { ?>
 src="<?php bloginfo('template_url'); ?>/images/img/noon.gif" 
  <?php } elseif (date("H") > "17" && date("H")<"21") { ?>
   src="<?php bloginfo('template_url'); ?>/images/img/evening.gif" 
  <?php } elseif (date("H") > "21" && date("H")<"24") { ?>
  src="<?php bloginfo('template_url'); ?>/images/img/night.gif" 
  <?php }else { ?>
  src="<?php bloginfo('template_url'); ?>/images/img/mid_night.gif" 
  <?php } ?>
Hitesh Sahu
quelle
1

Sie werden mehrere verschiedene Methoden finden, die Menschen verwenden und die jeweils ihren eigenen Platz haben.

<?php if($first_condition): ?>
  /*$first_condition is true*/
<?php elseif ($second_condition): ?>
  /*$first_condition is false and $second_condition is true*/
<?php else: ?>
  /*$first_condition and $second_condition are false*/
<?php endif; ?>

Wenn Sie in Ihrem php.ini-Attribut short_open_tag = true(das normalerweise in line 141der Standarddatei php.ini enthalten ist) Ihr php open-Tag von <?phpbis ersetzen können <?. Dies wird nicht empfohlen, da die meisten Live-Server-Umgebungen dies deaktiviert haben (einschließlich vieler CMS wie Drupal, WordPress und Joomla). Ich habe bereits kurze Hand-Open-Tags in Drupal getestet und bestätigt, dass Ihre Website dadurch beschädigt wird. Bleiben Sie also bei <?php. short_open_tagist nicht in allen Serverkonfigurationen standardmäßig aktiviert und darf bei der Entwicklung für unbekannte Serverkonfigurationen nicht als solche angenommen werden. Viele Hosting-Unternehmen haben short_open_tagausgeschaltet.

Eine schnelle Suche short_open_tagin stackExchange zeigt 830 Ergebnisse. https://stackoverflow.com/search?q=short_open_tag Das sind viele Leute, die Probleme mit etwas haben, mit dem sie einfach nicht spielen sollten.

In einigen Serverumgebungen und -anwendungen stürzen kurze PHP-Open-Tags Ihren Code auch bei short_open_tagEinstellung auf ab true.

short_open_tag wird in PHP6 entfernt, verwenden Sie also keine kurzen Hand-Tags.

Alle zukünftigen PHP-Versionen werden gelöscht short_open_tag

"Es wird seit einigen Jahren empfohlen, nicht das Short-Tag" Shortcut "zu verwenden, sondern die vollständige Tag-Kombination. Durch die weit verbreitete Verwendung von XML und die Verwendung dieser Tags durch andere Sprachen kann der Server leicht verwirrt werden Am Ende wird der falsche Code im falschen Kontext analysiert. Da diese Verknüpfung jedoch schon so lange eine Funktion ist, wird sie derzeit aus Gründen der Abwärtskompatibilität weiterhin unterstützt. Wir empfehlen jedoch, sie nicht zu verwenden. " - Jelmer 25. September 12 um 9:00 Uhr php: "short_open_tag = On" funktioniert nicht

und

Normalerweise schreibst du PHP so :. Wenn jedoch die Direktive allow_short_tags aktiviert ist, können Sie Folgendes verwenden :. Außerdem bietet sort tags eine zusätzliche Syntax: die gleich ist.

Kurze Tags mögen cool erscheinen, sind es aber nicht. Sie verursachen nur mehr Probleme. Oh ... und IIRC werden sie aus PHP6 entfernt. Crozin antwortete 24. August 10 um 22:12 php short_open_tag Problem

und

Um den Warum-Teil zu beantworten, zitiere ich den Zend PHP 5-Zertifizierungsleitfaden: "Kurze Tags waren zeitweise der Standard in der PHP-Welt; sie haben jedoch den Hauptnachteil, dass sie mit XML-Headern in Konflikt stehen, und haben dies daher getan etwas auf der Strecke geblieben. " - Fluffy 13. April 11 um 14:40 Sind PHP Short Tags akzeptabel zu verwenden?

Möglicherweise wird auch das folgende Beispiel verwendet:

<?php if($first_condition){ ?>
  /*$first_condition is true*/
<?php }else if ($second_condition){ ?>
  /*$first_condition is false and $second_condition is true*/
<?php }else{ ?>
  /*$first_condition and $second_condition are false*/
<?php } ?>

Dies wird funktionieren, ist jedoch sehr verpönt, da es nicht als lesbar angesehen wird und nicht das ist, wofür Sie dieses Format verwenden würden. Wenn Sie eine PHP-Datei hätten, in der sich ein PHP-Codeblock befand, in dem keine eingebetteten Tags enthalten waren, würden Sie das Klammerformat verwenden.

Das folgende Beispiel zeigt, wann die Klammermethode verwendet werden muss

<?php
if($first_condition){
   /*$first_condition is true*/
}else if ($second_condition){
   /*$first_condition is false and $second_condition is true*/
}else{
   /*$first_condition and $second_condition are false*/
}
?>

Wenn Sie diesen Code für sich selbst erstellen, können Sie tun, was Sie möchten. Wenn Sie jedoch mit einem Team an einem Arbeitsplatz arbeiten, wird empfohlen, das richtige Format für die richtigen Umstände zu verwenden. Wenn Sie in eingebetteten HTML / PHP-Skripten Klammern verwenden, ist dies ein guter Weg, um gefeuert zu werden, da niemand Ihren Code nach Ihnen bereinigen möchte. IT-Chefs kümmern sich um die Lesbarkeit des Codes und die Bewertung der Lesbarkeit durch Hochschulprofessoren.

AKTUALISIEREN

basierend auf Kommentaren von duskwuff ist es immer noch unklar, ob von Kurzschrift (nach den PHP-Standards) abgeraten wird oder nicht. Ich werde diese Antwort aktualisieren, sobald ich weitere Informationen erhalte. Aber basierend auf vielen Dokumenten, die im Internet gefunden wurden, dass Kurzschrift schlecht für die Portabilität ist. Ich persönlich würde es immer noch nicht verwenden, da es keinen Vorteil bietet und Sie sich darauf verlassen müssen, dass eine Einstellung aktiviert ist, die nicht für jeden Webhost aktiviert ist.

Patrick W. McMahon
quelle
1
"in PHP6"? PHP 6 existiert nicht und wird es niemals tun. Die nächste Hauptversion ist PHP 7 und es wird nicht erwartet, dass sich der Status von short_open_tags ändert.
Abenddämmerung -inaktiv-
@duskwuff Es ist möglich, dass Sie Recht haben, wenn sie zu PHP7 springen und PHP6 überspringen. Sie betrachten short_open_tags jedoch als in PHP5 entmutigt und werden veraltet sein.
Patrick W. McMahon
2
Woher kommt die Idee, dass sie "entmutigt" sind oder "veraltet werden"? Die Dokumentation sagt absolut nichts, was darauf hindeutet. php.net/manual/en/ini.core.php#ini.short-open-tag
duskwuff -inactive-
@duskwuff Ich verweise lediglich auf Dokumente, die andere angegeben haben. Siehe zum Beispiel stackoverflow.com/questions/22554753/… und was ich über Portabilität gesagt habe und wie man nicht davon ausgehen kann, dass jeder Server eingeschaltet ist, bin ich nicht falsch und wie jeder im Web sagt, nicht zu verwenden kurze Hand Ich muss mich auf die Seite der angegebenen Zahlen stellen. Es gibt einfach zu viele Leute, die sagen, sie nicht zu benutzen, anstatt sie zu benutzen. zusammen ohne Vorteil für die Verwendung.
Patrick W. McMahon
1
@ PatrickW.McMahon Sie haben keine Nummern angegeben. Sie verlinken auf eine einzelne StackOverflow-Antwort, die kaum eine Autorität ist, und erweitern sie auf "alle im Web". Greifen Sie zu.
Coreyward