it-swarm.com.de

Wenn sonst in HTML eingebettet

Was ist der korrekte Weg, wenn sonst und elseif Bedingungen in HTML eingebettet werden?

58
user550265

Ich empfehle die folgende Syntax zur besseren Lesbarkeit.

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

Wenn Sie php in den offenen Tags nicht angeben, muss short_open_tags in Ihrer Konfiguration aktiviert sein. Dies ist die Standardeinstellung . Die relevante bedingte Syntax für geschweifte Klammern ist immer aktiviert und kann unabhängig von dieser Anweisung verwendet werden. 

140
coreyward
<?php if ($foo) { ?>
    <div class="mydiv">Condition is true</div>
<?php } else { ?>
    <div class="myotherdiv">Condition is false</div>
<?php } ?>
33
Tyler Treat

EDIT: Ich freue mich auf @ Patrick's Antwort, aber scheinbar meint StackOverflow, dass mein Ruf nicht gut genug ist. Ich denke, das ist eine wichtige Anmerkung, da die Leute, die hier landen, dies tun, um zu lernen. Wenn dies gelöscht wird, weil es die Frage nicht beantwortet, kann es so sein: Wenn Patrick seine Antwort korrigieren könnte, schadet das Löschen nicht.

Ich sehe, dass dies eine alte Frage/Antwort ist, aber sie steht bei der Bing-Suche hoch im Kurs. Ich muss also diesen Kommentar für die PHP-verwirrten Seelen hinzufügen, die hier landen.

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

<?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; ?>

Elseif wird ausgelöst, ob $ first_condition wahr oder falsch ist, und zusätzliche elseif -Anweisungen, wenn mehrere vorhanden sind. 

Ich bin kein PHP - Experte, also weiß ich nicht, ob dies der korrekte-Weg ist, WENN dies OR zu sagen, das ansonsten oder ob es einen anderen/besseren gibt Eine Möglichkeit, es in PHP zu codieren, aber dies wäre ein wichtiger Unterschied zu denjenigen, die nach OR Bedingungen im Vergleich zu ELSE-Bedingungen suchen.

Quelle ist w3schools.com und meine eigene Erfahrung.

9
Sparkles
 <?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 } ?>
1
Hitesh Sahu

Sie werden mehrere verschiedene Methoden finden, die die Menschen verwenden, und jede hat dort ihren eigenen Platz. 

<?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 (dies befindet sich normalerweise in line 141 der Standarddatei php.ini) befindet, können Sie Ihr offenes PHP-Tag von <?php in <? ersetzen. Dies wird nicht empfohlen, da dies in den meisten Live-Server-Umgebungen deaktiviert ist (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 beschädigt wird. Bleiben Sie also bei <?php. short_open_tag ist nicht in allen Serverkonfigurationen standardmäßig aktiviert und darf bei der Entwicklung für unbekannte Serverkonfigurationen nicht als solcher angenommen werden. Viele Hosting-Unternehmen haben short_open_tag deaktiviert.

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

Bei einigen Serverumgebungen und Anwendungen stürzen die PHP-Tags für kurze Hand Ihren Code auch dann ab, wenn short_open_tag auf true gesetzt ist.

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

alle zukünftigen PHP Versionen werden short_open_tag fallen gelassen. 

"Es wird seit einigen Jahren empfohlen, dass Sie nicht das kurze Tag" short cut "verwenden und stattdessen die vollständige Tag Kombination verwenden. Mit der weit verbreiteten Verwendung von XML und der Verwendung dieser Tags durch Other In anderen Sprachen kann der Server leicht verwirrt werden und enden den falschen Code im falschen Kontext. __ Da dieser kurze __.-Schnitt jedoch schon seit langem ein Feature ist, wird er derzeit noch für .6 unterstützt Kompatibilität, wir empfehlen jedoch, sie nicht zu verwenden. " - Jelmer 25. September 12 um 09:00 Uhr php: "short_open_tag = On" funktioniert nicht

und

Normalerweise schreibt man PHP so:. Jedoch, wenn Die Direktive allow_short_tags ist aktiviert. Sie können Folgendes verwenden:. Sort-Tags bieten auch eine zusätzliche Syntax: which entspricht .

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 am 24. August 10 um 22:12 php short_open_tag problem

und

Um den Warum-Teil zu beantworten, würde ich Zend PHP 5-Zertifizierungshandbuch zitieren: "Kurze Tags waren zeitweise der Standard in der PHP - Welt; sie haben jedoch den großen Nachteil, dass sie mit XML-Headern in Konflikt stehen und daher etwas auf der Strecke geblieben sind. " - Flauschiger 13. April '11 um 14:40 Uhr Sind PHP kurze Tags akzeptabel für die Verwendung?

Es kann auch sein, dass Personen das folgende Beispiel verwenden:

<?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, aber es ist sehr verpönt, da es nicht als lesbar betrachtet wird und nicht für das Format, für das Sie dieses Format verwenden würden. Wenn Sie eine PHP -Datei mit einem Block PHP hätten, der keine eingebetteten Tags enthielt, würden Sie das Klammerformat verwenden. 

Das folgende Beispiel zeigt, wann die Klammermethode verwendet wird

<?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 machen, können Sie tun, was Sie möchten, aber wenn Sie bei einem Job mit einem Team arbeiten, empfiehlt es sich, das richtige Format für die richtigen Umstände zu verwenden. Wenn Sie in eingebetteten HTML/PHP-Skripten Klammern verwenden, ist dies eine gute Methode, um gefeuert zu werden, da niemand Ihren Code nach Ihnen bereinigen möchte. IT-Chefs werden sich um die Lesbarkeit von Code und Hochschulprofessoren für Lesbarkeit kümmern.

UPDATE

basierend auf den kommentaren von duskwuff ist es immer noch unklar, ob die Abkürzung (von den php-standards) abgelehnt wird oder nicht. Ich werde diese Antwort aktualisieren, wenn ich weitere Informationen bekomme. Aber basierend auf vielen im Internet gefundenen Dokumenten, dass Abkürzungen schlecht für die Portabilität sind. Ich persönlich würde es immer noch nicht verwenden, da es keinen Vorteil bietet und Sie sich auf eine Einstellung verlassen müssen, die nicht für jeden Webhost gilt. 

0