Sto programmando il mio primo vero sito Web PHP e mi sto chiedendo come rendere il mio codice più leggibile a me stesso. Il libro di riferimento che sto usando è PHP e MySQL Web Development 4th ed.Separazione di presentazione e business logic in PHP
Il libro di cui sopra dà tre approcci per la separazione logica e contenuti:
- file include
- funzione o classe API
- sistema di template
io non ho scelto uno di questi eppure, mentre avvolgere il mio cervello attorno a questi concetti richiede del tempo. Tuttavia, il mio codice è diventato un ibrido tra i primi due perché sto solo copiando e incollando qui e modificando mentre procedo.
Sul lato presentazione, tutte le mie pagine hanno questi elementi comuni: intestazione, navigazione in alto, navigazione barra laterale, contenuto, barra laterale destra e piè di pagina.
Gli esempi basati sulle funzioni nel libro suggeriscono che potrei avere queste funzioni di visualizzazione che gestiscono tutti gli esempi di presentazione. Quindi, il mio codice pagina sarà simile a questo:
display_header();
display_navigation();
display_content();
display_footer();
Tuttavia, non mi piace questo perché gli esempi del libro hanno queste dichiarazioni di stampa con HTML e PHP mescolati in questo modo:
echo "<tr bgcolor=\"".$color."\"><td><a href=\"".$url."\">" ...
Preferirei avere HTML con qualche PHP nel mezzo, non il contrario.
Sto pensando di creare le mie pagine in modo tale che all'inizio della mia pagina, recupererò tutti i dati dal database e li inserirò negli array. Riceverò anche i dati per le variabili. Se ci sono errori in uno di questi processi, li inserirò in stringhe di errore.
Quindi, nel codice HTML, effettuerò il ciclo di questi array utilizzando foreach e visualizzandone il contenuto. In alcuni casi, ci saranno alcune variabili che verranno mostrate. Se è presente una variabile di errore impostata, la visualizzerò nella posizione corretta.
(Come nota a margine: La cosa che non capisco è che nella maggior parte codice di esempio, se un po 'di query di database o roba del genere dà un errore, c'è sempre:
else echo 'Error';
Questo mi sconcerta, perché quando il codice di esempio restituisce un errore, a volte viene echeggiato anche prima dell'inizio dell'HTML ...)
Per le persone che hanno utilizzato ASP.NET, sono stato in qualche modo utilizzato per i file code-behind e lblError e I sto cercando di fare qualcosa di simile qui.
La cosa che non ho capito è come avrei potuto fare questa cosa "fare prima la logica, poi la presentazione" in modo che non avrei dovuto replicare per esempio la logica di navigazione e la presentazione di navigazione in tutte le pagine.
Devo fare alcuni file inclusi o potrei usare le funzioni qui, ma un po 'diversamente? Ci sono dei buoni articoli in cui questi "stili" di separazione tra presentazione e logica sono spiegati un po 'più a fondo. Il libro ho solo un paragrafo su questa roba.
Quello che sto pensando è che sto parlando di alcuni concetti o modi di programmazione PHP qui, ma non conosco ancora i termini per loro.
So che questa non è una domanda semplice, ho solo bisogno di aiuto nell'organizzare i miei pensieri.
Buona cosa nessuno ha menzionato heredocs. Per qualche ragione ogni volta che c'è una domanda per separare la logica e la presentazione, qualcuno menziona heredocs e ottiene un'assurda quantità di upvotes. –