2011-01-14 8 views
2

Ich bin ein Codeigniter-Projekt übernehmen und beachten Sie, dass das ursprüngliche Entwickler eine Mischung aus kurzen Tags und PHP-Tags in den Ansichten verwendet. Zum Beispiel:Mischung von PHP-Shorttags

<div id="content"> 

     <?=show_header()?> 

     <ul id="products"> 
      <?php if (count($products) > 0) : ?> 
      <?php foreach($products as $product) : ?> 
      ... 
</div> 

Ist diese schlechte Praxis zu erben? Ich denke, es verursacht bereits Probleme in meiner Entwicklungsumgebung.

EDIT: Was ist mit <?= => Tags INSIDE <? php ?> Tags in einigen Ansichten? Gefällt mir:

<ul> 
<?php foreach ($details as $detail) : ?> 
<?php $detail = split(',',$detail); ?> 
<?php if ($detail[0] != '') : ?> 
    <li> 
    <strong><?=ucwords($detail[0])?></strong> : <?=$detail[1]?> 
    </li> 
<?php endif; ?> 
<?php $i++; ?> 
<?php endforeach; ?> 
</ul> 

Das ist was mich jetzt verwirrt.

Antwort

7

Schlechte Idee. Nicht alle Installationen und Versionen von PHP unterstützen diese Art von Tagging und machen den Code sehr schwer lesbar.

Mein Rat ist: Verwenden Sie immer die vollständigen Open-Close-Tags: <?php /*...*/ ?>.

Wenn ich Ihr Skript zur Bearbeitung oder Korrektur erhalten hätte, hätte ich bei Zeile 3 angehalten, mich verflucht und mir den Kopf gekratzt, denn das ist offensichtlich nicht lesbar.

Auch in Zeile 6 & 7, würde ich lieber { anstelle von :, auch für die Lesbarkeit.

+2

Coderigniter hat eine Konfigurationseinstellung für die automatische Umwandlung in lange Form, wenn Sie sich jemals in einer Umgebung finden, die es nicht unterstützt. – jondavidjohn

+0

Ich finde die alternative Syntax für Kontrollstrukturen ('if:' 'endif;') viel besser lesbar, wenn PHP mit HTML gemischt wird. Etwas wie '' sieht einfach hässlich aus. :] –

1

Es ist eine schlechte Praxis aus zwei Gründen:

  1. Mangel an Konsistenz Codierung
  2. Es wird nur mit der PHP-Einstellung short_open_tag Set true

Für die ultimative Kompatibilität auf Web-Servern arbeiten und Tragbarkeit, verwenden Sie immer <?php ?>

+0

Beachten Sie, dass CI eine Option zum erneuten Schreiben von kurzen Tags in vollständige Tags bietet. Nicht, dass es sich lohnt, Overheads oder so. Aber ich mag, dass Sie das Wort "Ultimate" verwendet haben :) – BoltClock

3

Wenn Sie sich keine Gedanken über die Kompatibilität oder den Vorverarbeitungsaufwand machen möchten, verwenden Sie vollständig geöffnete Tags, als ob nie offene Tags existierten.

Wenn Sie nichts dagegen nicht im Stich gelassen CI kurze offene Tags vollständig geöffneten Tags neu schreiben, dann verwenden Sie kurze offene Tags, wenn Sie sie mögen, aber nur in der Ansicht Dateien:

$config['rewrite_short_tags'] = true; 

Aber sie in die Misch dieselbe Ansichtsdatei oder CI-Anwendung ist nur böse.

3

IMO, ja, es ist eine schlechte Praxis. Kurze Tags scheinen einfacher zu verwenden, aber sie sind nicht so kompatibel wie vollständige Tags. Sie sollten sich also immer an die vollständigen Tags halten.

Auch wenn Sie kurze Tags verwenden müssen, mischen Sie sie zumindest nicht in der gleichen Datei.

1

Streng, der kurze Echo-Tag <?= ?> und der Standard-PHP-Tag sprechen <?php ?> verschiedene Dinge tun (und werden zusammen manchmal verwendet). Unter Verwendung <?php ?> und seiner kurzen Tag entspricht <? ?> in einer einzigen Datei ist inkonsistent, und beide Formen von kurzen Tags werden jetzt jetzt abgeraten, da sie deprecated in PHP6 geplant sind.

Jedoch.CodeIgniter verarbeitet die Echo-Style-Tags als Basis-Template-Engine (ähnlich den Smarty-Tags). Ich empfehle dringend, die Echo-Tags in CodeIgniter-Ansichten für Variablen zu verwenden, da sie die Ansicht klarer als HTML/XML/etc.

<p><?= $text ?></p> 

Versus:

<p><?php echo $text ?></p> 

Die Alternative ist, in einer Bibliothek wie Smarty zu stecken, so dass Sie Blick auf ihr Zieldateiformat so nahe wie möglich ist. Ich habe festgestellt, dass das Reduzieren dieses Rauschens für das Debuggen und Verwalten von Ansichten wichtig ist.