{"id":1903,"date":"2013-06-13T06:30:36","date_gmt":"2013-06-13T05:30:36","guid":{"rendered":"http:\/\/www.manuelmarangoni.it\/sir-bit\/?p=1903"},"modified":"2013-06-12T16:24:28","modified_gmt":"2013-06-12T15:24:28","slug":"php-gestire-e-ottimizzare-i-parametri-passati-nelle-funzioni","status":"publish","type":"post","link":"https:\/\/www.manuelmarangoni.it\/sir-bit\/1903\/php-gestire-e-ottimizzare-i-parametri-passati-nelle-funzioni\/","title":{"rendered":"PHP &#8211; Gestire e ottimizzare i parametri passati nelle funzioni"},"content":{"rendered":"<p>Una volta che si acquisisce dimestichezza con un linguaggio di programmazione, diventa cosa comune utilizzare ogni giorno delle comode funzioni per ridurre il pi\u00f9 possibile il codice della pagina.<br \/>\n<strong>Ottimizzare l&#8217;esecuzione delle funzioni<\/strong> diventa utile, a volte persino necessario. Nel mio caso, faccio spesso uso di metodi di classe &#8211; che in quanto a gestione di base sono simili alle funzioni &#8211; e creare una struttura ottimizzata mi \u00e8 fondamentale (a tale proposito, se vi interessa approfondire l&#8217;argomento della programmazione a oggetti in php date un&#8217;occhiata al mio <a href=\"https:\/\/www.manuelmarangoni.it\/sir-bit\/1758\/tutorial-uso-delle-classi-in-php-esempio-di-base-completo\/\" title=\"Tutorial \u2013 Uso delle classi in php \u2013 Esempio di base completo\">articolo sulle classi<\/a>).<\/p>\n<p>In questo articolo vediamo un aspetto delle funzioni (e dei metodi di classe) spesso sottovalutato: come <strong>far passare in modo efficiente gli argomenti<\/strong>.<br \/>\nCome regola generale, io utilizzo un sistema semplice e che mi permette una certa flessibilit\u00e0:<br \/>\n&#8211; se i parametri da passare sono obbligatori, li scrivo in chiaro come argomento a s\u00e9 stante<br \/>\n&#8211; se i parametri sono facoltativi o di natura &#8220;secondaria&#8221; li faccio passare tutti assieme come elementi di un array<\/p>\n<p>Tra poco vedremo un esempio che spiegher\u00e0 meglio il concetto e l&#8217;utilit\u00e0 di utilizzare <strong>array come &#8220;contenitore di parametri&#8221;<\/strong>. Tengo a precisare di nuovo che si tratta di una regola generica, che non sempre applico: \u00e8 il buon senso a stabilire quando e in che modo farne uso.<\/p>\n<p>Per la comprensione di questo articolo si richiede una conoscenza di base dell&#8217;uso delle funzioni e degli array (per un ripasso di quest&#8217;ultimi, si pu\u00f2 fare ricorso a un <a href=\"https:\/\/www.manuelmarangoni.it\/sir-bit\/1126\/php-tutorial-di-base-uso-degli-array-creazione-gestione-lettura-degli-elementi\/\" title=\"PHP \u2013 Tutorial di base \u2013 Uso degli array: creazione, gestione, lettura degli elementi\">tutorial di base<\/a>).<\/p>\n<h3 style=\"margin-top:50px; margin-bottom:20px; color:#c00;\">La descrizione del procedimento<\/h3>\n<p>Prima una descrizione veloce su quello che andremo a creare.<br \/>\nSi presume che sia presente una tabella nel database (chiamata per esempio &#8220;utenti&#8221;) i cui record sono persone fisiche. I campi su cui andremo a lavorare nell&#8217;esempio saranno quattro:<br \/>\n&#8211; id del record<br \/>\n&#8211; nome<br \/>\n&#8211; cognome<br \/>\n&#8211; sesso<\/p>\n<p>La nostra idea \u00e8 semplicemente di far passare questi campi alla funzione, che corrisponderanno ai <strong>campi nel database da modificare<\/strong> (ovvero su cui fare una query di update). I campi potranno essere elaborati a piacere prima dell&#8217;esecuzione della query (per esempio, controllando che &#8220;cognome&#8221; non sia vuoto).<br \/>\n<!--more--><\/p>\n<h3 style=\"margin-top:50px; margin-bottom:20px; color:#c00;\">Il richiamo della funzione<\/h3>\n<p>Prima di scorrere la funzione vera e proprio, per maggiore comprensione partiamo dal fondo, e cio\u00e8 dal <strong>richiamo della funzione<\/strong> e dai parametri da passarle.<br \/>\nNell&#8217;esempio qui sotto andremo a modificare il record che nel database ha &#8220;id=18&#8243;. Gli passeremo soltanto due campi da modificare:<br \/>\n&#8211; cognome=&#8221;Rossi&#8221;<br \/>\n&#8211; sesso=&#8221;f&#8221;<\/p>\n<div class=\"wp_syntax\">\n<table>\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\n<\/pre>\n<\/td>\n<td class=\"code\">\n<pre class=\"php\" style=\"font-family:monospace;\"><span style=\"color: #666666; font-style: italic;\">\/\/id del record da modificare<\/span>\r\n<span style=\"color: #000088;\">$id_record<\/span> <span style=\"color: #339933;\">=<\/span> <span style=\"color: #cc66cc;\">18<\/span><span style=\"color: #339933;\">;<\/span>\r\n&nbsp;\r\n<span style=\"color: #666666; font-style: italic;\">\/\/campi da modificare<\/span>\r\n<span style=\"color: #000088;\">$parametri<\/span> <span style=\"color: #339933;\">=<\/span> <span style=\"color: #990000;\">array<\/span><span style=\"color: #009900;\">&#40;<\/span><span style=\"color: #0000ff;\">'cognome'<\/span><span style=\"color: #339933;\">=&gt;<\/span><span style=\"color: #0000ff;\">'Rossi'<\/span><span style=\"color: #339933;\">,<\/span> <span style=\"color: #0000ff;\">'sesso'<\/span><span style=\"color: #339933;\">=&gt;<\/span><span style=\"color: #0000ff;\">'f'<\/span><span style=\"color: #009900;\">&#41;<\/span><span style=\"color: #339933;\">;<\/span>\r\n&nbsp;\r\n<span style=\"color: #666666; font-style: italic;\">\/\/richiamo la funzione<\/span>\r\n<span style=\"color: #000088;\">$result<\/span> <span style=\"color: #339933;\">=<\/span> funzione_di_test<span style=\"color: #009900;\">&#40;<\/span><span style=\"color: #000088;\">$id_record<\/span><span style=\"color: #339933;\">,<\/span> <span style=\"color: #000088;\">$parametri<\/span><span style=\"color: #009900;\">&#41;<\/span><span style=\"color: #339933;\">;<\/span><\/pre>\n<\/td>\n<\/tr>\n<\/table>\n<\/div>\n<p>Come potete notare, passeremo i valori come parametri della funzione <em>funzione_di_test<\/em>. Ma mentre $id_record sar\u00e0 un parametro a s\u00e9 stante, i rimanenti valori saranno contenuti nell&#8217;array $parametri.<\/p>\n<h3 style=\"margin-top:50px; margin-bottom:20px; color:#c00;\">La funzione di esecuzione<\/h3>\n<p>Vediamo infine la funzione.<br \/>\nSe avete dimestichezza con <strong>funzioni e array in php<\/strong>, non avrete problemi a comprendere i commenti. In ogni caso, subito sotto vedremo i punti pi\u00f9 particolari.<\/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\/\/ ]]><\/script><\/p>\n<p><em>Nota<\/em>: non ho inserito nessun controllo sui dati passati, che dovrete quindi preoccuparvi di aggiungere. Inoltre, ho mostrato soltanto il codice della funzione che ci interessa per lo scopo dell&#8217;articolo, cio\u00e8 fino al salvataggio delle variabili affinch\u00e9 siano pronte all&#8217;uso. Eventuali query di update o altre operazioni si lasciano a vostra discrezione.<\/p>\n<div class=\"wp_syntax\">\n<table>\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\n<\/pre>\n<\/td>\n<td class=\"code\">\n<pre class=\"php\" style=\"font-family:monospace;\"><span style=\"color: #000000; font-weight: bold;\">function<\/span> funzione_di_test<span style=\"color: #009900;\">&#40;<\/span><span style=\"color: #000088;\">$id<\/span><span style=\"color: #339933;\">,<\/span> <span style=\"color: #000088;\">$parameters<\/span> <span style=\"color: #339933;\">=<\/span> <span style=\"color: #009900; font-weight: bold;\">null<\/span><span style=\"color: #009900;\">&#41;<\/span><span style=\"color: #009900;\">&#123;<\/span>\r\n&nbsp;\r\n\t<span style=\"color: #666666; font-style: italic;\">\/\/valori di default\t<\/span>\r\n\t<span style=\"color: #000088;\">$default_parameters<\/span> <span style=\"color: #339933;\">=<\/span> <span style=\"color: #990000;\">array<\/span><span style=\"color: #009900;\">&#40;<\/span>\r\n\t\t<span style=\"color: #0000ff;\">'nome'<\/span> <span style=\"color: #339933;\">=&gt;<\/span> <span style=\"color: #0000ff;\">'Sconosciuto'<\/span><span style=\"color: #339933;\">,<\/span>\r\n\t\t<span style=\"color: #0000ff;\">'cognome'<\/span> <span style=\"color: #339933;\">=&gt;<\/span> <span style=\"color: #0000ff;\">''<\/span><span style=\"color: #339933;\">,<\/span>\r\n\t\t<span style=\"color: #0000ff;\">'sesso'<\/span> <span style=\"color: #339933;\">=&gt;<\/span> <span style=\"color: #0000ff;\">'m'<\/span>\r\n\t<span style=\"color: #009900;\">&#41;<\/span><span style=\"color: #339933;\">;<\/span>\r\n&nbsp;\r\n\t<span style=\"color: #666666; font-style: italic;\">\/\/se \u00e8 stato passato qualche parametro all'array $parameters, faccio il merge tra questo e l'array di default, altrimenti prendo l'array di default<\/span>\r\n\t<span style=\"color: #666666; font-style: italic;\">\/\/i parametri passati sovrascriveranno quelli di default<\/span>\r\n\t<span style=\"color: #b1b100;\">if<\/span> <span style=\"color: #009900;\">&#40;<\/span><span style=\"color: #990000;\">is_array<\/span><span style=\"color: #009900;\">&#40;<\/span><span style=\"color: #000088;\">$parameters<\/span><span style=\"color: #009900;\">&#41;<\/span> and <span style=\"color: #339933;\">!<\/span><span style=\"color: #990000;\">empty<\/span><span style=\"color: #009900;\">&#40;<\/span><span style=\"color: #000088;\">$parameters<\/span><span style=\"color: #009900;\">&#41;<\/span><span style=\"color: #009900;\">&#41;<\/span> <span style=\"color: #009900;\">&#123;<\/span>\r\n\t\t<span style=\"color: #000088;\">$ar<\/span> <span style=\"color: #339933;\">=<\/span> <span style=\"color: #990000;\">array_merge<\/span><span style=\"color: #009900;\">&#40;<\/span><span style=\"color: #000088;\">$default_parameters<\/span><span style=\"color: #339933;\">,<\/span> <span style=\"color: #000088;\">$parameters<\/span><span style=\"color: #009900;\">&#41;<\/span><span style=\"color: #339933;\">;<\/span>    \r\n\t<span style=\"color: #009900;\">&#125;<\/span> <span style=\"color: #b1b100;\">else<\/span> <span style=\"color: #009900;\">&#123;<\/span>\r\n\t\t<span style=\"color: #000088;\">$ar<\/span> <span style=\"color: #339933;\">=<\/span> <span style=\"color: #000088;\">$default_parameters<\/span><span style=\"color: #339933;\">;<\/span>\r\n\t<span style=\"color: #009900;\">&#125;<\/span>\r\n&nbsp;\r\n\t<span style=\"color: #000088;\">$id_record<\/span> <span style=\"color: #339933;\">=<\/span> <span style=\"color: #000088;\">$id<\/span><span style=\"color: #339933;\">;<\/span>\r\n\t<span style=\"color: #000088;\">$nome<\/span> <span style=\"color: #339933;\">=<\/span> <span style=\"color: #000088;\">$ar<\/span><span style=\"color: #009900;\">&#91;<\/span><span style=\"color: #0000ff;\">'nome'<\/span><span style=\"color: #009900;\">&#93;<\/span><span style=\"color: #339933;\">;<\/span>\r\n\t<span style=\"color: #000088;\">$cognome<\/span> <span style=\"color: #339933;\">=<\/span> <span style=\"color: #000088;\">$ar<\/span><span style=\"color: #009900;\">&#91;<\/span><span style=\"color: #0000ff;\">'cognome'<\/span><span style=\"color: #009900;\">&#93;<\/span><span style=\"color: #339933;\">;<\/span>\r\n\t<span style=\"color: #000088;\">$sesso<\/span> <span style=\"color: #339933;\">=<\/span> <span style=\"color: #000088;\">$ar<\/span><span style=\"color: #009900;\">&#91;<\/span><span style=\"color: #0000ff;\">'sesso'<\/span><span style=\"color: #009900;\">&#93;<\/span><span style=\"color: #339933;\">;<\/span>\r\n&nbsp;\r\n\t<span style=\"color: #666666; font-style: italic;\">\/\/DA QUI IN POI IL CODICE DA ESEGUIRE (ES: ESECUZIONE DELLA QUERY DI UPDATE)<\/span>\r\n\t<span style=\"color: #666666; font-style: italic;\">\/\/NELL'ESEMPIO VIENE LASCIATO A TUA DISCREZIONE<\/span>\r\n&nbsp;\r\n<span style=\"color: #009900;\">&#125;<\/span><\/pre>\n<\/td>\n<\/tr>\n<\/table>\n<\/div>\n<p>L&#8217;array <em>$default_parameters<\/em> contiene tutti gli elementi facoltativi, ovvero che possono essere o meno passati dal programmatore. Per ognuno di questi elementi, associa un valore di default.<\/p>\n<p>Cosa succede a questo punto? Se l&#8217;indice di array corrispondente \u00e8 stato passato in <em>$parameters<\/em>, allora sar\u00e0 il valore di quest&#8217;ultimo a essere preso; viceversa, sar\u00e0 <strong>il valore di default a essere preso<\/strong>.<br \/>\nLa funzione nativa di php <em>array_merge<\/em> si occupa esattamente di questo: prendere i valori di <em>$parameters<\/em> e sostituirli a quelli rispettivi di <em>$default_parameters<\/em>. Il risultato sar\u00e0 l&#8217;array <em>$ar<\/em>, che conterr\u00e0 i valori risultanti.<\/p>\n<p>Riprendendo l&#8217;esempio con cui abbiamo richiamato la funzione, vediamo che abbiamo passato soltanto &#8220;cognome&#8221; e &#8220;sesso&#8221; in <em>$parameters<\/em>, mentre per &#8220;nome&#8221; prenderemo il valore di default.<\/p>\n<div class=\"wp_syntax\">\n<table>\n<tr>\n<td class=\"line_numbers\">\n<pre>1\r\n2\r\n3\r\n<\/pre>\n<\/td>\n<td class=\"code\">\n<pre class=\"php\" style=\"font-family:monospace;\"><span style=\"color: #666666; font-style: italic;\">\/\/campi da modificare<\/span>\r\n<span style=\"color: #000088;\">$parametri<\/span> <span style=\"color: #339933;\">=<\/span> <span style=\"color: #990000;\">array<\/span><span style=\"color: #009900;\">&#40;<\/span><span style=\"color: #0000ff;\">'cognome'<\/span><span style=\"color: #339933;\">=&gt;<\/span><span style=\"color: #0000ff;\">'Rossi'<\/span><span style=\"color: #339933;\">,<\/span> <span style=\"color: #0000ff;\">'sesso'<\/span><span style=\"color: #339933;\">=&gt;<\/span><span style=\"color: #0000ff;\">'f'<\/span><span style=\"color: #009900;\">&#41;<\/span><span style=\"color: #339933;\">;<\/span>\r\n<span style=\"color: #000088;\">$result<\/span> <span style=\"color: #339933;\">=<\/span> funzione_di_test<span style=\"color: #009900;\">&#40;<\/span><span style=\"color: #000088;\">$id_record<\/span><span style=\"color: #339933;\">,<\/span> <span style=\"color: #000088;\">$parametri<\/span><span style=\"color: #009900;\">&#41;<\/span><span style=\"color: #339933;\">;<\/span><\/pre>\n<\/td>\n<\/tr>\n<\/table>\n<\/div>\n<p>In questo caso l&#8217;array $ar risulter\u00e0 con questi valori:<\/p>\n<div class=\"wp_syntax\">\n<table>\n<tr>\n<td class=\"line_numbers\">\n<pre>1\r\n2\r\n3\r\n<\/pre>\n<\/td>\n<td class=\"code\">\n<pre class=\"php\" style=\"font-family:monospace;\"><span style=\"color: #b1b100;\">echo<\/span> <span style=\"color: #000088;\">$ar<\/span><span style=\"color: #009900;\">&#91;<\/span><span style=\"color: #0000ff;\">'nome'<\/span><span style=\"color: #009900;\">&#93;<\/span><span style=\"color: #339933;\">;<\/span> <span style=\"color: #666666; font-style: italic;\">\/\/ &quot;Sconosciuto&quot;<\/span>\r\n<span style=\"color: #b1b100;\">echo<\/span> <span style=\"color: #000088;\">$ar<\/span><span style=\"color: #009900;\">&#91;<\/span><span style=\"color: #0000ff;\">'cognome'<\/span><span style=\"color: #009900;\">&#93;<\/span><span style=\"color: #339933;\">;<\/span> <span style=\"color: #666666; font-style: italic;\">\/\/ &quot;Rossi&quot;<\/span>\r\n<span style=\"color: #b1b100;\">echo<\/span> <span style=\"color: #000088;\">$ar<\/span><span style=\"color: #009900;\">&#91;<\/span><span style=\"color: #0000ff;\">'sesso'<\/span><span style=\"color: #009900;\">&#93;<\/span><span style=\"color: #339933;\">;<\/span> <span style=\"color: #666666; font-style: italic;\">\/\/ &quot;f&quot;<\/span><\/pre>\n<\/td>\n<\/tr>\n<\/table>\n<\/div>\n<h3 style=\"margin-top:50px; margin-bottom:20px; color:#c00;\">L&#8217;utilit\u00e0 di un array contenitore come parametro<\/h3>\n<p>Qual \u00e8 l&#8217;utilit\u00e0 di utilizzare un array al posto di un valore fisso? Vediamola con un esempio. Poniamo il caso che la nostra funzione fosse costruita in questo modo, dove &#8220;$id&#8221; \u00e8 un valore obbligatorio da passare alla funzione, mentre &#8220;$nome&#8221; \u00e8 un parametro che possiamo anche non passare:<\/p>\n<div class=\"wp_syntax\">\n<table>\n<tr>\n<td class=\"line_numbers\">\n<pre>1\r\n2\r\n3\r\n<\/pre>\n<\/td>\n<td class=\"code\">\n<pre class=\"php\" style=\"font-family:monospace;\"><span style=\"color: #000000; font-weight: bold;\">function<\/span> funzione_di_test<span style=\"color: #009900;\">&#40;<\/span><span style=\"color: #000088;\">$id<\/span><span style=\"color: #339933;\">,<\/span> <span style=\"color: #000088;\">$nome<\/span> <span style=\"color: #339933;\">=<\/span> <span style=\"color: #0000ff;\">''<\/span><span style=\"color: #009900;\">&#41;<\/span><span style=\"color: #009900;\">&#123;<\/span>\r\n<span style=\"color: #339933;\">...<\/span>\r\n<span style=\"color: #009900;\">&#125;<\/span><\/pre>\n<\/td>\n<\/tr>\n<\/table>\n<\/div>\n<p>Nei vari codici del nostro sito, ci sarranno alcune volte in cui passeremo anche il parametro &#8220;nome&#8221; e alle volte in cui non lo passeremo. Per esempio:<\/p>\n<div class=\"wp_syntax\">\n<table>\n<tr>\n<td class=\"line_numbers\">\n<pre>1\r\n2\r\n<\/pre>\n<\/td>\n<td class=\"code\">\n<pre class=\"php\" style=\"font-family:monospace;\"><span style=\"color: #000088;\">$result<\/span> <span style=\"color: #339933;\">=<\/span> funzione_di_test<span style=\"color: #009900;\">&#40;<\/span><span style=\"color: #cc66cc;\">10<\/span><span style=\"color: #339933;\">,<\/span> <span style=\"color: #0000ff;\">'Francesco'<\/span><span style=\"color: #009900;\">&#41;<\/span><span style=\"color: #339933;\">;<\/span>\r\n<span style=\"color: #000088;\">$result2<\/span> <span style=\"color: #339933;\">=<\/span> funzione_di_test<span style=\"color: #009900;\">&#40;<\/span><span style=\"color: #cc66cc;\">15<\/span><span style=\"color: #009900;\">&#41;<\/span><span style=\"color: #339933;\">;<\/span><\/pre>\n<\/td>\n<\/tr>\n<\/table>\n<\/div>\n<p><strong>1) Comodit\u00e0<\/strong><br \/>\nLa prima cosa che salta all&#8217;occhio \u00e8 la comodit\u00e0 rappresentata da <em>$default_parameters<\/em>, che ci permette di inserire dei valori di default per tutti quei parametri che non vengono passati.<br \/>\nCerto, avremo potuto far passare i parametri con valori di default direttamente come argomento della funzione. Ma volete mettere la comodit\u00e0 di utilizzare una semplice funzione di <em>array_merge<\/em> per stabilire se prendere i valori di default oppure quelli passati?<\/p>\n<p><strong>2) Eleganza<\/strong><br \/>\nMettiamo il caso che in futuro ci accorgiamo di dover aggiungere un parametro &#8220;partita_iva&#8221; alla funzione <em>funzione_di_test<\/em>. La funzione diventa:<\/p>\n<div class=\"wp_syntax\">\n<table>\n<tr>\n<td class=\"line_numbers\">\n<pre>1\r\n2\r\n3\r\n<\/pre>\n<\/td>\n<td class=\"code\">\n<pre class=\"php\" style=\"font-family:monospace;\"><span style=\"color: #000000; font-weight: bold;\">function<\/span> funzione_di_test<span style=\"color: #009900;\">&#40;<\/span><span style=\"color: #000088;\">$id<\/span><span style=\"color: #339933;\">,<\/span> <span style=\"color: #000088;\">$nome<\/span> <span style=\"color: #339933;\">=<\/span> <span style=\"color: #0000ff;\">''<\/span><span style=\"color: #339933;\">,<\/span> <span style=\"color: #000088;\">$partita_iva<\/span> <span style=\"color: #339933;\">=<\/span> <span style=\"color: #0000ff;\">''<\/span><span style=\"color: #009900;\">&#41;<\/span><span style=\"color: #009900;\">&#123;<\/span>\r\n<span style=\"color: #339933;\">...<\/span>\r\n<span style=\"color: #009900;\">&#125;<\/span><\/pre>\n<\/td>\n<\/tr>\n<\/table>\n<\/div>\n<p>Se dovessimo aggiungere la partita iva al richiamo immagazzinato in &#8220;$result2&#8221;, saremmo costretti a lasciare uno spazio vuoto come parametro:<\/p>\n<div class=\"wp_syntax\">\n<table>\n<tr>\n<td class=\"line_numbers\">\n<pre>1\r\n<\/pre>\n<\/td>\n<td class=\"code\">\n<pre class=\"php\" style=\"font-family:monospace;\"><span style=\"color: #000088;\">$result2<\/span> <span style=\"color: #339933;\">=<\/span> funzione_di_test<span style=\"color: #009900;\">&#40;<\/span><span style=\"color: #cc66cc;\">15<\/span><span style=\"color: #339933;\">,<\/span> <span style=\"color: #0000ff;\">''<\/span><span style=\"color: #339933;\">,<\/span> <span style=\"color: #0000ff;\">'12345678912'<\/span><span style=\"color: #009900;\">&#41;<\/span><span style=\"color: #339933;\">;<\/span><\/pre>\n<\/td>\n<\/tr>\n<\/table>\n<\/div>\n<p>Non ci sarebbe niente di male, \u00e8 solo uno spazio vuoto. Ma immaginate se la funzione accettasse numerosi parametri, alcuni facoltativi e altri meno: saremo costretti a &#8220;compilare&#8221; lo spazio dei parametri facoltativi che non passiamo lasciandoli tutti vuoti.<br \/>\nSe invece facciamo uso di un array come $parameters, ci basta aggiungere un elemento nell&#8217;array per ogni valore da passare, ignorando completamente i valori facoltativi.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Attraverso un esempio, vediamo come migliorare l&#8217;uso degli argomenti da passare alle funzioni o ai metodi di classe, per comodit\u00e0 e per un codice pulito.<\/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],"class_list":["post-1903","post","type-post","status-publish","format-standard","hentry","category-php-mysql","tag-php","tag-programmazione-oggetti","cat-78-id"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-json\/wp\/v2\/posts\/1903"}],"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=1903"}],"version-history":[{"count":5,"href":"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-json\/wp\/v2\/posts\/1903\/revisions"}],"predecessor-version":[{"id":1908,"href":"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-json\/wp\/v2\/posts\/1903\/revisions\/1908"}],"wp:attachment":[{"href":"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-json\/wp\/v2\/media?parent=1903"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-json\/wp\/v2\/categories?post=1903"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-json\/wp\/v2\/tags?post=1903"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}