2009-09-08 7 views
13

Giusto per chiarire: Le questioni "ECHO vs stampa" e "doppie virgolette vs virgolette singole" sono perfettamente capito, si tratta di un'altra cosa:php echo vs tag aprire e chiudere

Esistono motivi per cui si farebbe preferire:

echo '<table>'; 
foreach($lotsofrows as $row) 
{ 
    echo '<tr><td>',$row['id'],'</td></tr>'; 
} 
echo '<table>'; 

sopra:

<table><?php 
     foreach($lotsofrows as $row) 
     { ?> 
      <tr> 
       <td><?php echo $row['id']; ?></td> 
      </tr><?php 
     } ?> 
</table> 

sarebbe uno dei due eseguire/analizzare più veloce? è più elegante? (ecc.)

Tendo ad usare la seconda opzione, ma sono preoccupato che potrei trascurare qualcosa di ovvio/essenziale.

+0

Grazie per tutti i commenti, sono consapevole che questa non è una domanda che ha la risposta, ma richiede attenzione se non c'è nulla di ufficiale nei manuali di PHP e il feedback fornito è stato estremamente utile: ero inconsapevole le prime opzioni sono molto più leggibili rispetto alla seconda, quindi continuerò a utilizzare i tag per i blocchi di grandi dimensioni e inizierò a utilizzare "echo" per quelli brevi. – Migs

+0

Sono d'accordo con i sentimenti per progetto. Se hai un sacco di PHP e il tag HTML occasionale, usa il primo. Ma se hai un sacco di HTML e il comando occasionale di PHP, usa quest'ultimo (usa HTML e inserisci tag PHP qua e là); dovrebbe * essere * più veloce poiché i tag sono già presenti come letterali, mentre stamparli significa passare i tag come stringhe alla funzione print/echo, che poi li stampa. Questo può sommarsi per una pagina principalmente HTML, ma non sarà molto per una pagina principalmente PHP. – Synetech

risposta

5

Il primo è molto più leggibile a mio avviso, tuttavia, il secondo comporta tecnicamente meno analisi. In ogni caso, qualsiasi vantaggio in termini di velocità sarebbe probabilmente minimo e senza significato senza profilazione.

L'ottimizzazione prematura è la radice di tutto il male. Fai ciò che rende il codice più facile da leggere e mantenere. L'efficienza occupa un posto indietro nella manutenzione.

vedere http://en.wikipedia.org/wiki/Optimization_%28computer_science%29#When_to_optimize per qualche buon consiglio sul tema

2

Il migliore è un motore di template.

Ma, penso che l'eco sia molto più pulito e più leggibile (almeno in questo caso - come sottolineato nei commenti, dipende), rispetto all'apertura e alla chiusura dei tag ovunque (non ne so molto di PHP internals per dire quale è più veloce, però).

+1

La leggibilità dipende molto dalla quantità di testo emessa tramite 'echo', imho. Per una linea singola che chiude e apre tag PHP è eccessivo ... per una riga completa della tabella con, come, 20 colonne, è una storia diversa. Anche gli editor di testo possono evidenziare l'HTML al di fuori dei tag PHP, ma solitamente non all'interno delle stringhe di PHP. Di nuovo, questo è principalmente un problema se c'è * molto * markup che dovrebbe essere emesso. – Joey

+0

Continuo a pensare che il motore di template sia il migliore. :) Ma hai ragione. –

+2

IMHO, se usi qualche tipo di motore MVC (e dovresti davvero), il sistema di template è completamente inutile. Da quello che ho visto in pratica, i sistemi di template sono usati dai web designer che non conoscono abbastanza PHP per capire cosa fa il codice o dai programmatori che devono ancora scoprire il pattern MVC. –

2

È molto affidabile quello che scrivi. PHP può essere usato come linguaggio di programmazione o come semplice e potente linguaggio di template web. Mescolando questi due usi molto, molto male pratica e sarà orribile da sostenere a lungo termine.

Quindi il secondo stile è più utilizzabile nei modelli con molto markup html e piccoli punti di codice, in primo luogo - per la programmazione "chiara" del php.

8

Benefici di primo

  • più facile da leggere
  • ???

Vantaggi della seconda

  • WYSIWYG è possibile
  • HTML Codice Completamento/Tag-corrispondenza possibile con alcuni IDE
  • sfuggire mal di testa
  • Più facile per i più grandi pezzi di HTML

Se ho un sacco di codice HTML in una determinata routine PHP (come una vista MVC), allora sicuramente uso il 2 ° metodo. Ma l'ho formattato in modo diverso - mi affido strettamente alla natura tag-like delle demarcazioni di PHP, ad es., Faccio sezioni PHP appaiono tanto come tag HTML che posso

<table> 
    <?php foreach($lotsofrows as $row) { ?> 
    <tr> 
    <td><?php echo $row['id']; ?></td> 
    </tr> 
    <?php } ?> 
</table> 
+0

Mi piace anche meglio della mia risposta, quindi +1 da me :) –

2

primo è più leggibile dal punto di vista della programmazione, ma il secondo permette di aprire il file in alcuni editor WYSIWYG HTML e il cambiamento il design della pagina.

io preferisco la seconda opzione, perché è molto più facile da dire al vostro progettista che "questa parte della pagina si comporterà così", che "questo pezzo di codice fa che"

+0

+1, la seconda soluzione semplifica la vita con i progettisti che non conoscono PHP e non vogliono imparare. Ancora, la soluzione ottimale sarebbe modelli, ma ... –

7

Sono d'accordo con Peter Bailey. Tuttavia, nelle viste io uso la sintassi alternativa per le istruzioni e preferisco molto i tag brevi (in particolare per l'eco). Così, l'esempio di cui sopra sarebbe invece leggere:

<table> 
    <? foreach($lotsofrows as $row): ?> 
    <tr> 
    <td><?= $row['id']; ?></td> 
    </tr> 
    <? endforeach; ?> 
</table> 

Credo che questo sia lo standard preferito per Zend Framework.

+0

Sei arrivato prima di me;) Questa è la sintassi che uso la maggior parte del tempo (anche se l'avrei messa foreach sulla sua stessa riga). – DisgruntledGoat

+0

Salve voidstate, di solito ho evitato i tag brevi a causa della frase della documentazione: "Usare tag brevi dovrebbe essere evitato quando si sviluppano applicazioni o librerie che sono destinate alla ridistribuzione", ma poi di nuovo la comunità ha parlato con la maggior parte dei voti, cosa ho perso? – Migs

+0

Dove lavoro ho il controllo sui server, quindi non è un problema per me e rende le visualizzazioni IMO molto più leggibili. Ecco il documento Zend Framework: http://framework.zend.com/manual/en/zend.view.html # zend.view.introduction.shortTags Si suggerisce di modificare l'impostazione php_ini in un file .htaccess utilizzando il seguente: php_value "short_open_tag" "on" – voidstate