2013-01-08 9 views
6

Ho ereditato un sito Web per il quale ho bisogno di apportare alcune modifiche. Come sempre ci sono molti modi per fare le cose nello sviluppo di siti web. Tuttavia, questo particolare sito mi ha confuso. Tutto il codice html viene fornito tramite script php heredoc. Tuttavia, nessuno esegue alcuna elaborazione php.Perché generare HTML semplice tramite PHP heredoc?

Per esempio (struttura solo) index.php:

<?php 
$html = <<<html 

<html> 
    <head></head> 
    <body> 
     {more simple HTML here. No php processing to be done} 
    </body> 
</html> 
html; 
echo $html; 
?> 

capisco il PHP, ma io non riesco a capire il motivo per cui generare la pagina in questo modo di opporsi a fornire semplicemente senza l'elaborazione variabile PHP . Prima di presupporre che la persona non avesse idea di quello che stavano facendo pensavo di chiedere. Qualche idea?

Questo è il mio primo post su StackOverflow quindi anche il feedback sull'etichetta del forum.

+0

Ecco i dettagli di heredoc, potrebbe esserti utile: http: //in3.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc –

+0

Di solito le persone tendono a fai questo con i documenti xml con cui giocano prima di salvarli in un file reale ... ora mi sembra che il coder che ha creato la pagina non abbia apprezzato il * server pigro * ideale. –

+1

Per quanto riguarda l'etichetta SO, basta leggere le [FAQ] (http://stackoverflow.com/faq). La tua domanda è ben scritta e chiara, il che è un ottimo inizio! –

risposta

1

Potrebbe essere perché intendevano utilizzare variabili PHP all'interno di HEREDOC. Il tuo esempio non ha quelli, ma rischierei di indovinare che sono usati in posti. Da lì, vorrei quindi immaginare HEREDOC usato ovunque per coerenza.

+0

Questo risulta essere corretto. I file sono stati generati da un programma di creazione di siti Web. –

1

Il motivo degli heredoc è probabilmente dovuto al fatto che non è necessario evitare le virgolette o preoccuparsi delle virgolette all'interno di un heredoc, mentre i letterali stringa devono gestire le virgolette di conseguenza.

È più comune, tuttavia, mantenere l'HTML in un file separato o utilizzare un sistema di template - generalmente questa opzione sarebbe migliore di heredocs o stringhe letterali.

+1

Penso che si stiano chiedendo: perché memorizzare l'HTML in una variabile, quindi farlo eco? Non sarebbe meglio sfuggire a PHP, quindi includerlo "nudo"? –

+0

@GigaWatt Questo è esattamente quello che mi stavo chiedendo. Mi è sembrato strano usare la formattazione heredoc per puro html. Tuttavia, ho scoperto che i file php sono stati generati da un altro programma utilizzato per creare il sito. Questo è il metodo di output predefinito per il generatore. –

1

I file PHP sono già file di modello in formato HTML.

Sostituire il codice con:

<html> 
    <head></head> 
    <body> 
     {more simple HTML here. No php processing to be done} 
    </body> 
</html> 

Basta avere HTML nel corpo di un file PHP, al di fuori di <?php e ?>, restituisce il codice HTML.

+0

Sono d'accordo. Ho intenzione di cambiare il codice per renderlo più chiaro. –

1

Si potrebbe passare settimane cercando di entrare nella testa di uno sviluppatore legacy ed è solo tempo perso.

Vorrei suggerire il refactoring del codice per non aver bisogno di nulla in PHP in questi casi, non c'è alcun vantaggio nel fare ciò che hanno fatto e sarà un'esperienza sconvolgente per te ogni volta che vai a modificarlo.

+1

Questo è quello che farò. Oltre ad avere alcun vantaggio, il mio editor analizza il codice come PHP anziché HTML. Quale per me è un dolore. –