Quando si realizza un sito dinamico (ma non solo) è buona norma dedicare un file per ogni sezione dello stesso. Nell’immagine sopra ho evidenziato le sezioni (che troverete quasi sempre in qualsiasi sito) header, menubar, sidebar, content e footer che includeremo come header.php, menubar.php, sidebar.php, content.php e footer.php.
Perchè orientarsi verso questa metodologia? Per “modulare” il più possibile il sito diminuendo notevolmente i tempi per future modifiche e/o aggiornamenti. Per fare un esempio, avendo un sito con molte pagine ci troveremo un bel giorno ad aggiungere la voce “foto” al menu di navigazione poichè un nostro ipotetico cliente vuole dedicare una pagina alle foto del suo account flickr.
Trattandosi di un sito le cui sezioni sono state suddivise in file, invece di modificare il menu in ogni pagina (facendo un lavoraccio duro e noioso se le pagine del sito sono molte), apriremo il file menubar.php e aggiungeremo il nuovo link/pulsante solo in questo file.
Aggiornamento terminato in quanto il file menubar.php è incluso dinamicamente in ogni pagina del sito web.
Per inserire un file esterno in una pagina web si possono usare i comandi include o require. La sintassi è la seguente:
<?php include(“menubar.php”); ?>
<?php require(“menubar.php”); ?>
La differenza tra le due istruzioni è che in caso di errore, ad esempio il nome del file è sbagliato, l’istruzione include genera un warning che non blocca l’esecuzione della pagina mentre require genera un errore che blocca l’esecuzione.
Un errore comune è quello di includere più volte lo stesso file causando danni come il nuovo settaggio di variabili tanto per fare un esempio. Questo problema si può evitare utilizzando la seguente sintassi:
<?php include_once(“menubar.php”); ?>
<?php require_once(“menubar.php”); ?>
Queste istruzioni evitano che il file venga nuovamente incluso in caso di distrazione.
Per motivi di sicurezza è buona norma non includere dinamicamente file via GET o POST. Immaginate il cracker di turno che include una sua pagina con codice “malevolo” 🙄
La nascita dei framework MVC ha semplificato la vita agli sviluppatori prevedendo la separazione della logica dalla presentazione.
Eh si..è la tecnica migliore per rendere le modifiche future agevoli. Io cerco di suddividere il più possibile, anche più segmenti delle sidebar per esempio..
Ottimo articolo, ciao!
Ciao Angelo,
Anche a me, a volte, prende la mania della iper-suddivisione.
A proposito, complimenti per il PR4 😉
io invece di fare un file per ogni sezione faccio piu funzioni in un unico file, includo il file e dopo richiamo le funzioni quando servono.
Per quanto riguarda l’include_once e il require_one è meglio non utilizzarlo in quanto non sempre funziona a dovere.
E naturalmente per la sicurezza evitare l’include da parte del get, per quanto riguarda il post invece si può utilizzare ma lo trovo alquanto inutile includere un file da una variabile post quando lo posso fare io manualmente e nascondendo così il nome della pagina.
Ciao Filippo.
Dividere il sito dedicando un file per ogni sezione è una cosa molto utile per i motivi citati nel post.
Per quanto riguarda le funzioni anche io le racchiudo in un unico file ad esempio, post.php contiene le funzioni per la gestione dei post, photo.php contiene le funzioni che gestiscono le immagini ecc.
Anche questa metodologia è molto utile, grazie per averlo ricordato 😉
E’ un articolo interessante ma mi stavo chiedendo se questo suddividere le sezioni in file non può portare a qualche “sorpresa” con i motori di ricerca.
Ad esempio nel mio file index.php includo un file che si chiama descrizione.php che contiene la descrizione della mia attività, viene indicizzato anche descrizione.php ?
E se si è possibile che compaia, tra i risultati del motore di ricerca, anche il file descrizione.php insieme a index.php ?
Ciao.
Ciao Fab,
nessuna sorpresa con i motori di ricerca, ricorda che sei tu a decidere cosa vuoi che indicizzino fornendo link e, magari, una sitemap. Se viene indicizzato qualcosa che non vuoi compaia nelle SERP chiedi la rimozione del contenuto in questione e utilizza opportunamente un file robots.txt.