L’importanza di una buona struttura per un sito web con l’uso di funzioni PHP – parte 1

La costruzione di un sito web non deve mai essere lasciata al caso. Prima di iniziare a buttare giù il contenuto e lo scheletro grafico, serve innanzitutto immaginare quale potrebbe essere la struttura migliore che potrebbe eventualmente subire modifiche nel modo più indolore possibile.

Sto parlando a livello di codice, naturalmente, e in particolare quando abbiamo a disposizione un linguaggio PHP su cui lavorare (ma con l’uso di un altro linguaggio, come l’ASP, il concetto è identico). La struttura del nostro sito deve essere semplice, flessibile e adattabile a ogni situazione.
In pratica deve permetterci:
– di integrare un header, un footer e una sidebar comune a tutte le pagine; in caso di bisogno, però, deve lasciarci la possibilità di integrare una sidebar diversa (o addirittura un layout senza sidebar)
– di apportare facilmente delle modifiche grafiche
– di richiamare variabili e funzioni senza doverle continuamente includere in ogni pagina

In questo esempio vi presento la struttura minimale da usare per costruire un sito efficiente a livello di codice. Per comodità di esposizione, sarà diviso in due articoli.

Una nota importante: la struttura di questo esempio è buona perché flessibile, visto che permette di essere riutilizzata per qualsiasi tipologia di sito. Si tratta però di una struttura di base, che può e deve essere migliorata (per esempio facendo uso di classi invece che di funzioni o creando una sottocartella che gestisca i vari temi del sito). L’esempio è rivolto a chi non ha molta esperienza alle spalle e desidera avere una struttura di base efficiente su cui mettere le mani.

Per la comprensione dell’articolo si richiede una buona conoscenza del php e dell’uso di funzioni. I principianti, comunque, potranno facilmente usarla nel proprio sito: potranno incontrare qualche difficoltà quando decidessero di modificarla alla radice.
Tutte le pagine sono commentate in ogni loro parte.
Il layout grafico all’interno è solo di esempio. Le classi css dovranno essere implementate da voi con un foglio di stile esterno e secondo le vostre esigenze, così come eventuali funzioni javascript o php.

Vi consiglio di scaricare prima di tutto lo script, perché la parte più comprensibile del codice non sarà riportata in questo articolo. Inoltre, così avrete sottomano un confronto diretto.

Si accettano (anzi, sono graditi) suggerimenti per migliorare lo script e soprattutto la segnalazione di eventuali errori. Vi sarò grato io come chi scaricherà lo script e dovrà metterci le mani.

Download script

La pagina Struttura.inc.php – Premessa e descrizione generale

La base del nostro sito, cioè lo scheletro vero e proprio, sarà contenuta nel file Struttura.inc.php. In questo file costruiremo le funzioni da importare in ognuna delle nostre pagine.
Ogni sezione del nostro sito sarà un modulo a sé stante e non avrà niente a che fare con le altre sezioni del sito: l’unica cosa in comune tra le varie sezione è l’inclusione del suddetto Struttura.inc.php (e quindi di tutto quello che a sua volta questo file include).

Se, per esempio, dobbiamo costruire un’area di login e una per i contatti, creeremo due cartelle separate (cartella “login” e cartella “contatti”) e all’interno di ognuna di queste creeremo un file index.php e gli eventuali file legati alla sola sezione corrente (css, javascript, ecc.).
Sul browser ci basterà scrivere l’indirizzo della cartella (es: “www.sito.it/contatti”) per entrare nella sezione voluta.

Vediamo in generale come si compone il file Struttura.inc.php.

Prima di ogni altra cosa dobbiamo includere i file esterni, che saranno sempre e comunque richiamati da tutte le sezioni. Cioè:

1
2
3
include("config.inc.php"); //inclusione del file di connessione al database
include("variabili.inc.php"); //inclusione delle variabili richiamabili in ogni pagina
include("function.inc.php"); //inclusione delle funzioni richiamabili in ogni pagina

Una domanda sorge spontanea: non avremmo potuto scrivere direttamente in Struttura.inc.php il contenuto di questi file, invece di includerli?
Creare separatamente questi file ci può essere utile in molti modi. Mettiamo, per esempio, che dobbiate creare delle sezioni stand-alone, che cioè non devono recuperare la grafica del sito. Importare tutto il contenutro di Struttura.inc.php sarebbe inutile. Ecco allora che potremmo importare soltanto il file config.inc.php per accedere al database, o il file variabili.inc.php per recuperare le variabili generali del sito.
Un esempio di casi come questo lo avete quando dovete stampare dei dati in formato pdf tramite l’uso di librerie esterne quali fpdf, di cui ho scritto un articolo tempo fa.
L’unica cosa da ricordare è che in questi file inclusi non deve essere stampato niente a video, altrimenti perderebbero la loro utilità.

Seguiranno le funzioni che costruiscono il layout generale del sito, sempre uguale in ogni sezione:
head() : crea la grafica della parte superiore (l’header) e include i metatag, le importazioni dei fogli di stile, ecc.
content() : crea la cornice grafica che comporrà il corpo del sito
footer() : crea la grafica della parte inferiore (footer)

Queste funzioni sono sufficienti. Eventuali sidebar o codici nel corpo della sezione saranno richiamate nella funzione content(), come vedremo.

Perché usare le funzioni?
Il motivo è pratico. Prima di tutto, possiamo passare agevolmente parametri alla funzione voluta. Se per esempio ci serve fare dei controlli in base alla sezione in cui siamo, potremmo creare una variabile $nome_pagina nella sezione e richiamarla all’interno di head() in questo modo:

1
2
3
4
5
6
head($nome_pagina){
	if($nome_pagina=="contatti")
		echo "Questa è la sezione contatti";
	else
		echo "Questa non è la sezione contatti";
}

Inoltre, possiamo creare delle funzioni ad hoc, che hanno grafiche diverse a seconda della sezione in cui ci troviamo.
Poniamo per esempio che gran parte delle nostre pagine usino un layout con una sidebar sinistra. Nelle sezioni, quindi, richiameremo sempre:

1
2
3
head("nome_pagina");
content();
footer();

Ma se una delle nostre sezioni dovesse essere costruita senza sidebar, cioè un corpo centrale esteso a tutta pagina? Ecco allora che creeremo una funzione content_singolo(), il cui layout sarà senza sidebar, e nella sezione lo richiameremo in questo modo:

1
2
3
head("nome_pagina");
content_singolo();
footer();

Abbiamo visto la struttura generale di costruzione del sito. Nel prossimo articolo passeremo in rassegna le tre funzioni della struttura di base: head(), content() e footer(). Inoltre, chiariremo il loro uso studiando una pagina di esempio.
Una volta comprese, potrete personalizzarle senza problemi.

Etichette:,

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *