{"id":1790,"date":"2013-04-18T06:30:10","date_gmt":"2013-04-18T05:30:10","guid":{"rendered":"http:\/\/www.manuelmarangoni.it\/sir-bit\/?p=1790"},"modified":"2013-05-26T14:08:00","modified_gmt":"2013-05-26T13:08:00","slug":"php-una-classe-per-stampare-i-get-e-i-post-in-modo-elegante","status":"publish","type":"post","link":"https:\/\/www.manuelmarangoni.it\/sir-bit\/1790\/php-una-classe-per-stampare-i-get-e-i-post-in-modo-elegante\/","title":{"rendered":"PHP &#8211; Una classe per stampare i get e i post in modo elegante"},"content":{"rendered":"<p>Di recente mi sono trovato a lavorare con la struttura di un sito piuttosto complesso, costruito interamente sulla base della <a title=\"Tutorial \u2013 Uso delle classi in php \u2013 Esempio di base completo\" href=\"https:\/\/www.manuelmarangoni.it\/sir-bit\/1758\/tutorial-uso-delle-classi-in-php-esempio-di-base-completo\/\">programmazione a oggetti<\/a>.<br \/>\nIn questa situazione, per evitare errori futuri difficili da scovare, <strong>occorre seguire una &#8220;manovra&#8221; di continuo debug<\/strong>, controllando il codice non appena una classe \u00e8 pronta per essere usata (salvo miglioramenti futuri).<\/p>\n<p>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.<br \/>\nCosa fa di preciso? Richiamando il metodo voluto, recupera per esempio il $_GET e <strong>stampa a video ogni sua chiave con il relativo valore<\/strong> all&#8217;interno di una struttura a tabella.<\/p>\n<p>In questo modo avremo alcuni vantaggi non trascurabili:<br \/>\n&#8211; facilit\u00e0 di vedere il contenuto di questi array globali in mezzo al codice gi\u00e0 stampato a video<br \/>\n&#8211; possibilit\u00e0 di stampare a video chiavi e valori richiamando un solo metodo, risparmiando tempo e codice<br \/>\n&#8211; possibilit\u00e0 di personalizzare l&#8217;aspetto della struttura di stampa<\/p>\n<p>Un metodo simile pu\u00f2 essere usato per <strong>stampare a video le chiavi e i valori di qualsiasi array<\/strong>, come vedremo pi\u00f9 sotto (a dire la verit\u00e0 si potrebbe modificare la classe affinch\u00e9, con un unico metodo, si possano stampare $_GET, $_POST e qualsiasi array: ma per chiarezza li lasciamo separati).<\/p>\n<h3 style=\"margin-top: 50px; margin-bottom: 20px; color: #c00;\">La struttura della classe<\/h3>\n<p>Diamo un&#8217;occhiata all&#8217;intera classe nella sua forma base. Ogni passaggio \u00e8 commentato, per cui richieder\u00e0 soltanto qualche piccola spiegazione.<!--more--><\/p>\n<p><script type=\"text\/javascript\">\/\/ <![CDATA[\ngoogle_ad_client = \"ca-pub-9984963620559913\"; \/* Sir Bit - post singolo rettangolare *\/ google_ad_slot = \"5334366715\"; google_ad_width = 336; google_ad_height = 280;\n\/\/ ]]><\/script><br \/>\n<script type=\"text\/javascript\" src=\"http:\/\/pagead2.googlesyndication.com\/pagead\/show_ads.js\">\/\/ <![CDATA[\n\n\n\/\/ ]]><\/script><\/p>\n<div class=\"wp_syntax\">\n<table>\n<tbody>\n<tr>\n<td class=\"line_numbers\">\n<pre>1\r\n2\r\n3\r\n4\r\n5\r\n6\r\n7\r\n8\r\n9\r\n10\r\n11\r\n12\r\n13\r\n14\r\n15\r\n16\r\n17\r\n18\r\n19\r\n20\r\n21\r\n22\r\n23\r\n24\r\n25\r\n26\r\n27\r\n28\r\n29\r\n30\r\n31\r\n32\r\n33\r\n34\r\n35\r\n36\r\n37<\/pre>\n<\/td>\n<td class=\"code\">\n<pre class=\"php\" style=\"font-family: monospace;\"><span style=\"color: #000000; font-weight: bold;\">class<\/span> debug_print <span style=\"color: #009900;\">{<\/span>\r\n\r\n\t<span style=\"color: #666666; font-style: italic;\">\/\/Crea la struttura grafica per la stampa degli elementi di debug<\/span>\r\n   \t<span style=\"color: #666666; font-style: italic;\">\/\/$content \u00e8 il contenuto da mostrare<\/span>\r\n\t<span style=\"color: #000000; font-weight: bold;\">function<\/span> debug_structure<span style=\"color: #009900;\">(<\/span><span style=\"color: #000088;\">$content<\/span><span style=\"color: #009900;\">)<\/span> <span style=\"color: #009900;\">{<\/span>\r\n\r\n\t\t<span style=\"color: #000088;\">$string<\/span> <span style=\"color: #339933;\">=<\/span> <span style=\"color: #0000ff;\">''<\/span><span style=\"color: #339933;\">;<\/span>\r\n\t\t <span style=\"color: #000088;\">$string<\/span><span style=\"color: #339933;\">.=<\/span><span style=\"color: #0000ff;\">'&lt;div class=\"debug_container\"&gt;\r\n\t\t\t '<\/span> <span style=\"color: #339933;\">.<\/span> <span style=\"color: #000088;\">$content<\/span> <span style=\"color: #339933;\">.<\/span> <span style=\"color: #0000ff;\">'\r\n\t\t&lt;div&gt;\r\n\t\t &lt;div class=\"clear\"&gt;&lt;\/div&gt;'<\/span><span style=\"color: #339933;\">;<\/span>\r\n\r\n\t\t <span style=\"color: #b1b100;\">echo<\/span> <span style=\"color: #000088;\">$string<\/span><span style=\"color: #339933;\">;<\/span>\r\n   \t<span style=\"color: #009900;\">}<\/span>\r\n\r\n \t<span style=\"color: #666666; font-style: italic;\">\/\/Stampa tutti i get della pagina entro una struttura grafica predefinita<\/span>\r\n\t<span style=\"color: #000000; font-weight: bold;\">function<\/span> print_get<span style=\"color: #009900;\">(<\/span><span style=\"color: #009900;\">)<\/span> <span style=\"color: #009900;\">{<\/span>\r\n\r\n\t\t<span style=\"color: #000088;\">$string<\/span> <span style=\"color: #339933;\">=<\/span> <span style=\"color: #0000ff;\">''<\/span><span style=\"color: #339933;\">;<\/span>\r\n\t\t<span style=\"color: #000088;\">$string<\/span><span style=\"color: #339933;\">.=<\/span><span style=\"color: #0000ff;\">'&lt;div class=\"debug_field_box\"&gt;\r\n\t\t\t&lt;div class=\"debug_field_head\"&gt;Chiave get&lt;\/div&gt;\r\n\t\t\t&lt;div class=\"debug_field_head\"&gt;Valore&lt;\/div&gt;\r\n\t\t&lt;\/div&gt;\r\n\t\t&lt;div class=\"clear\"&gt;&lt;\/div&gt;'<\/span><span style=\"color: #339933;\">;<\/span>\r\n\t\t<span style=\"color: #b1b100;\">while<\/span> <span style=\"color: #009900;\">(<\/span><span style=\"color: #990000;\">list<\/span><span style=\"color: #009900;\">(<\/span><span style=\"color: #000088;\">$key<\/span><span style=\"color: #339933;\">,<\/span> <span style=\"color: #000088;\">$value<\/span><span style=\"color: #009900;\">)<\/span> <span style=\"color: #339933;\">=<\/span> <span style=\"color: #990000;\">each<\/span><span style=\"color: #009900;\">(<\/span><span style=\"color: #000088;\">$_GET<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #009900;\">)<\/span> <span style=\"color: #009900;\">{<\/span>\r\n\t\t\t<span style=\"color: #000088;\">$string<\/span><span style=\"color: #339933;\">.=<\/span><span style=\"color: #0000ff;\">'&lt;div class=\"debug_field_box\"&gt;\r\n\t\t\t\t&lt;div class=\"debug_field\"&gt;'<\/span> <span style=\"color: #339933;\">.<\/span> <span style=\"color: #000088;\">$key<\/span> <span style=\"color: #339933;\">.<\/span> <span style=\"color: #0000ff;\">'&lt;\/div&gt;\r\n\t\t\t\t&lt;div class=\"debug_field\"&gt;'<\/span> <span style=\"color: #339933;\">.<\/span> <span style=\"color: #000088;\">$value<\/span> <span style=\"color: #339933;\">.<\/span> <span style=\"color: #0000ff;\">'&lt;\/div&gt;\r\n\t\t\t&lt;\/div&gt;\r\n\t\t\t&lt;div class=\"clear\"&gt;&lt;\/div&gt;'<\/span><span style=\"color: #339933;\">;<\/span>\r\n\t\t<span style=\"color: #009900;\">}<\/span>\r\n\t\t<span style=\"color: #990000;\">reset<\/span><span style=\"color: #009900;\">(<\/span><span style=\"color: #000088;\">$_GET<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span>\r\n\r\n\t\t<span style=\"color: #b1b100;\">return<\/span> <span style=\"color: #000088;\">$this<\/span><span style=\"color: #339933;\">-&gt;<\/span><span style=\"color: #004000;\">debug_structure<\/span><span style=\"color: #009900;\">(<\/span><span style=\"color: #000088;\">$string<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span>\r\n\t<span style=\"color: #009900;\">}<\/span>\r\n\r\n<span style=\"color: #009900;\">}<\/span><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Le classi css sono lasciate di proposito generiche: ognuno di voi \u00e8 libero di formattarle a seconda delle sue esigenze.<\/p>\n<p>Il metodo <em>debug_structure<\/em> <strong>contiene l&#8217;aspetto grafico (la &#8220;cornice&#8221;) della nostra struttura<\/strong> di debug, mentre il metodo <em>print_get<\/em> si occupa di stampare a video, in forma gradevole, tutte le chiavi e i valori del $_GET.<br \/>\nIl metodo print_get() richiamer\u00e0 automaticamente il metodo debug_structure().<\/p>\n<p>Per inizializzare la classe e richiamare il metodo ci baster\u00e0 creare queste due righe di codice:<\/p>\n<div class=\"wp_syntax\">\n<table>\n<tbody>\n<tr>\n<td class=\"line_numbers\">\n<pre>1\r\n2<\/pre>\n<\/td>\n<td class=\"code\">\n<pre class=\"php\" style=\"font-family: monospace;\"><span style=\"color: #000088;\">$debug<\/span> <span style=\"color: #339933;\">=<\/span> <span style=\"color: #000000; font-weight: bold;\">new<\/span> debug_print<span style=\"color: #009900;\">(<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span>\r\n<span style=\"color: #b1b100;\">echo<\/span> <span style=\"color: #000088;\">$debug<\/span><span style=\"color: #339933;\">-&gt;<\/span><span style=\"color: #004000;\">print_get<\/span><span style=\"color: #009900;\">(<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h3 style=\"margin-top: 50px; margin-bottom: 20px; color: #c00;\">La stampa di un qualsiasi array<\/h3>\n<p>Per la stampa dei valori del $_POST ci baster\u00e0 modificare il metodo print_get() e chiamarlo <em>print_post()<\/em>, sostituendo le occorrenze di $_GET con $_POST.<\/p>\n<p>Come dicevo, lo stesso metodo modificato si pu\u00f2 utilizzare per creare la stampa a video di un qualsiasi array. L&#8217;unica vera modifica \u00e8 <strong>l&#8217;aggiunta di un parametro, nel quale passeremo l&#8217;array<\/strong> da stampare.<\/p>\n<div class=\"wp_syntax\">\n<table>\n<tbody>\n<tr>\n<td class=\"line_numbers\">\n<pre>1\r\n2\r\n3\r\n4\r\n5\r\n6\r\n7\r\n8\r\n9\r\n10\r\n11\r\n12\r\n13\r\n14\r\n15\r\n16\r\n17\r\n18\r\n19\r\n20<\/pre>\n<\/td>\n<td class=\"code\">\n<pre class=\"php\" style=\"font-family: monospace;\"><span style=\"color: #666666; font-style: italic;\">\/\/Stampa tutti chiave e valore dell'array passato, in una struttura grafica predefinita<\/span>\r\n<span style=\"color: #666666; font-style: italic;\">\/\/$array \u00e8 l'array passato<\/span>\r\n <span style=\"color: #000000; font-weight: bold;\">function<\/span> print_array<span style=\"color: #009900;\">(<\/span><span style=\"color: #000088;\">$array<\/span><span style=\"color: #009900;\">)<\/span> <span style=\"color: #009900;\">{<\/span>\r\n\r\n\t<span style=\"color: #000088;\">$string<\/span> <span style=\"color: #339933;\">=<\/span> <span style=\"color: #0000ff;\">''<\/span><span style=\"color: #339933;\">;<\/span>\r\n\t<span style=\"color: #000088;\">$string<\/span><span style=\"color: #339933;\">.=<\/span><span style=\"color: #0000ff;\">'&lt;div class=\"debug_field_box\"&gt;\r\n\t\t&lt;div class=\"debug_field_head\"&gt;Chiave array&lt;\/div&gt;\r\n\t\t&lt;div class=\"debug_field_head\"&gt;Valore&lt;\/div&gt;\r\n\t&lt;\/div&gt;\r\n\t&lt;div class=\"clear\"&gt;&lt;\/div&gt;'<\/span><span style=\"color: #339933;\">;<\/span>\r\n\t<span style=\"color: #b1b100;\">while<\/span> <span style=\"color: #009900;\">(<\/span><span style=\"color: #990000;\">list<\/span><span style=\"color: #009900;\">(<\/span><span style=\"color: #000088;\">$key<\/span><span style=\"color: #339933;\">,<\/span> <span style=\"color: #000088;\">$value<\/span><span style=\"color: #009900;\">)<\/span> <span style=\"color: #339933;\">=<\/span> <span style=\"color: #990000;\">each<\/span><span style=\"color: #009900;\">(<\/span><span style=\"color: #000088;\">$array<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #009900;\">)<\/span> <span style=\"color: #009900;\">{<\/span>\r\n\t\t<span style=\"color: #000088;\">$string<\/span><span style=\"color: #339933;\">.=<\/span><span style=\"color: #0000ff;\">'&lt;div class=\"debug_field_box\"&gt;\r\n\t\t\t&lt;div class=\"debug_field\"&gt;'<\/span> <span style=\"color: #339933;\">.<\/span> <span style=\"color: #000088;\">$key<\/span> <span style=\"color: #339933;\">.<\/span> <span style=\"color: #0000ff;\">'&lt;\/div&gt;\r\n\t\t\t&lt;div class=\"debug_field\"&gt;'<\/span> <span style=\"color: #339933;\">.<\/span> <span style=\"color: #000088;\">$value<\/span> <span style=\"color: #339933;\">.<\/span> <span style=\"color: #0000ff;\">'&lt;\/div&gt;\r\n\t\t&lt;\/div&gt;\r\n\t\t&lt;div class=\"clear\"&gt;&lt;\/div&gt;'<\/span><span style=\"color: #339933;\">;<\/span>\r\n\t<span style=\"color: #009900;\">}<\/span>\r\n\r\n\t<span style=\"color: #b1b100;\">return<\/span> <span style=\"color: #000088;\">$this<\/span><span style=\"color: #339933;\">-&gt;<\/span><span style=\"color: #004000;\">debug_structure<\/span><span style=\"color: #009900;\">(<\/span><span style=\"color: #000088;\">$string<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span>\r\n<span style=\"color: #009900;\">}<\/span><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Una classe per stampare a video le chiavi e i valori dei $_GET, dei $_POST e di qualsiasi array. E&#8217; sufficiente richiamare un metodo, risparmiando tempo e codice.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[78],"tags":[4,77,46],"class_list":["post-1790","post","type-post","status-publish","format-standard","hentry","category-php-mysql","tag-php","tag-programmazione-oggetti","tag-tutorial","cat-78-id"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-json\/wp\/v2\/posts\/1790"}],"collection":[{"href":"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-json\/wp\/v2\/comments?post=1790"}],"version-history":[{"count":5,"href":"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-json\/wp\/v2\/posts\/1790\/revisions"}],"predecessor-version":[{"id":1892,"href":"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-json\/wp\/v2\/posts\/1790\/revisions\/1892"}],"wp:attachment":[{"href":"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-json\/wp\/v2\/media?parent=1790"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-json\/wp\/v2\/categories?post=1790"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-json\/wp\/v2\/tags?post=1790"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}