L'ultimo articolo scritto su Sir Bit risale a marzo 2014. La versione che state visitando è un archivio: le pagine sono accessibili come sempre e gli autori potrebbero rispondere ai commenti, ma non saranno inseriti dei nuovi articoli. Visita questa pagina per i dettagli.

PHP – Una classe per stampare i get e i post in modo elegante

Di recente mi sono trovato a lavorare con la struttura di un sito piuttosto complesso, costruito interamente sulla base della programmazione a oggetti.
In questa situazione, per evitare errori futuri difficili da scovare, occorre seguire una “manovra” di continuo debug, controllando il codice non appena una classe è pronta per essere usata (salvo miglioramenti futuri).

Per risparmiare tempo, tra gli altri script ho realizzato una classe piuttosto semplice che mi permette di stampare il contenuto dei $_GET e dei $_POST in modo agevole e con un aspetto elegante.
Cosa fa di preciso? Richiamando il metodo voluto, recupera per esempio il $_GET e stampa a video ogni sua chiave con il relativo valore all’interno di una struttura a tabella.

In questo modo avremo alcuni vantaggi non trascurabili:
– facilità di vedere il contenuto di questi array globali in mezzo al codice già stampato a video
– possibilità di stampare a video chiavi e valori richiamando un solo metodo, risparmiando tempo e codice
– possibilità di personalizzare l’aspetto della struttura di stampa

Un metodo simile può essere usato per stampare a video le chiavi e i valori di qualsiasi array, come vedremo più sotto (a dire la verità si potrebbe modificare la classe affinché, con un unico metodo, si possano stampare $_GET, $_POST e qualsiasi array: ma per chiarezza li lasciamo separati).

La struttura della classe

Diamo un’occhiata all’intera classe nella sua forma base. Ogni passaggio è commentato, per cui richiederà soltanto qualche piccola spiegazione.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
class debug_print {

	//Crea la struttura grafica per la stampa degli elementi di debug
   	//$content è il contenuto da mostrare
	function debug_structure($content) {

		$string = '';
		 $string.='<div class="debug_container">
			 ' . $content . '
		<div>
		 <div class="clear"></div>';

		 echo $string;
   	}

 	//Stampa tutti i get della pagina entro una struttura grafica predefinita
	function print_get() {

		$string = '';
		$string.='<div class="debug_field_box">
			<div class="debug_field_head">Chiave get</div>
			<div class="debug_field_head">Valore</div>
		</div>
		<div class="clear"></div>';
		while (list($key, $value) = each($_GET)) {
			$string.='<div class="debug_field_box">
				<div class="debug_field">' . $key . '</div>
				<div class="debug_field">' . $value . '</div>
			</div>
			<div class="clear"></div>';
		}
		reset($_GET);

		return $this->debug_structure($string);
	}

}

Le classi css sono lasciate di proposito generiche: ognuno di voi è libero di formattarle a seconda delle sue esigenze.

Il metodo debug_structure contiene l’aspetto grafico (la “cornice”) della nostra struttura di debug, mentre il metodo print_get si occupa di stampare a video, in forma gradevole, tutte le chiavi e i valori del $_GET.
Il metodo print_get() richiamerà automaticamente il metodo debug_structure().

Per inizializzare la classe e richiamare il metodo ci basterà creare queste due righe di codice:

1
2
$debug = new debug_print();
echo $debug->print_get();

La stampa di un qualsiasi array

Per la stampa dei valori del $_POST ci basterà modificare il metodo print_get() e chiamarlo print_post(), sostituendo le occorrenze di $_GET con $_POST.

Come dicevo, lo stesso metodo modificato si può utilizzare per creare la stampa a video di un qualsiasi array. L’unica vera modifica è l’aggiunta di un parametro, nel quale passeremo l’array da stampare.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//Stampa tutti chiave e valore dell'array passato, in una struttura grafica predefinita
//$array è l'array passato
 function print_array($array) {

	$string = '';
	$string.='<div class="debug_field_box">
		<div class="debug_field_head">Chiave array</div>
		<div class="debug_field_head">Valore</div>
	</div>
	<div class="clear"></div>';
	while (list($key, $value) = each($array)) {
		$string.='<div class="debug_field_box">
			<div class="debug_field">' . $key . '</div>
			<div class="debug_field">' . $value . '</div>
		</div>
		<div class="clear"></div>';
	}

	return $this->debug_structure($string);
}
Etichette
Etichette:, ,

Lascia un commento

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

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.