Wordpress: wp_parse_args()

lunedì 5 gennaio, 2009

La funzione wp_parse_args() (come molte altre non documentata) elabora una stringa nel formato:

CODE:
  1. var1=value1&var2=value2...varn=valuen

Questa è una caratteristica molto diffusa nelle funzioni Wordpress ed è utile quando una funzione supporta più paramteri. Come indicato in Argomenti variabili e di default in Javascript, Actionscript e PHP, non sarebbe necessario passare i parametri nella modalità var1=value1&var2=value2...varn=valuen, in quanto PHP è in grado di gestire in tutta tranquillità il passaggio di parametri variabili.

Synopsis

PHP:
  1. /**
  2.  * Merge user defined arguments into defaults array.
  3.  *
  4.  * This function is used throughout WordPress to allow for both string or array
  5.  * to be merged into another array.
  6.  *
  7.  * @since 2.2.0
  8.  *
  9.  * @param    (string|array)    $args Value to merge with $defaults
  10.  * @param    (array)           $defaults Array that serves as the defaults.
  11.  * @return   (array)           Merged user defined values with defaults.
  12.  */

In realtà il primo parametro può essere anche un oggetto. Nel caso passiamo una stringa con i valori separati da ampersen, viene chiamata la funzione Wordpress di più basso livello wp_parse_str()

Esempio

Per chiarirne il funzionamento vediamo un esempio. Immaginiamo di dover scrivere una funzione ( myFunc() ) che supporta tre parametri opzionali: par1, par2 e par3. La dichiarazione sarà ovviamente:

PHP:
  1. function myFunc( $args ) {}

Dove è $args sarà la nostra stringa nel formato:

CODE:
  1. var1=value1&var2=value2...varn=valuen

Una possibile chiamata potrebbe essere:

PHP:
  1. myFunc( "par3=ciao&par1=salve" );

Ho inserito di proposito i parametri in un ordine qualsiasi, altra caratteristica che rende il tutto versatile. Vediamo come opera quindi wp_parse_args():

PHP:
  1. function myFunc( $args ) {
  2.     $new_args = wp_parse_args( $args );
  3.     //
  4.     echo $new_args["par1"];
  5.     echo $new_args["par2"];
  6.     echo $new_args["par3"];
  7. }

Chiamando la nostra funzione con myFunc( "par3=ciao&par1=salve" ); scopriremmo che par2 non è impostato! Ed ecco il motivo del secondo parametro della funzione wp_parse_args():

PHP:
  1. function myFunc( $args ) {
  2.     $default = array( "par1" => "salve",
  3.                       "par2" => "come",
  4.                       "par3" => "va?" );
  5.     //
  6.     $new_args = wp_parse_args( $args, $default );
  7.     //
  8.     echo $new_args["par1"];
  9.     echo $new_args["par2"];
  10.     echo $new_args["par3"];
  11. }
  12. //
  13. myFunc( "par3=stai&par1=tu" );
  14. // avremmo
  15. // tu
  16. // come
  17. // stai

La comodità di questo approccio è nella possibilità di pre-impostare dei valori di default che vengono utilizzati quando non presenti nella stringa passata come primo parametro.

Perchè usare wp_parse_args()

Tutto questo sarebbe possibile senza utilizzare wp_parse_args() in quanto PHP fornisce già tutte le funzioni per svolgere questo lavoro, vedi ad esempio: parse_str() e array_merge(). Utilizzare wp_parse_args() conviene principalmente per 2 motivi:

  • gestisce per noi il passaggio di un oggetto, un array o una stringa
  • il suo comportamento è modificabile tramite i filtri di Wordpress: vedi apply_filters()

Post correlati

Questo articolo ti è stato utile?: Per nientePocoAbbastanzaMoltoMoltissimo
Loading ... Loading ...

3 commenti a: “Wordpress: wp_parse_args()”

  1. 05 gen, 2009 Wordpress: wp_parse_args() | Undolog.com:

    [...] approfondire consulta articolo originale: Wordpress: wp_parse_args() | Undolog.com Author: [...]

  2. 05 gen, 2009 Wordpress: wp_parse_args() | Undolog.com:

    [...] la lettura con la fonte di questo articolo:  Wordpress: wp_parse_args() | Undolog.com Author: [...]

  3. 03 lug, 2009 Undolog.com» Wordpress: usare gli shortcodes:

    [...] a come abbiamo visto in Wordpress: wp_parse_args() , la gestione degli attributi è davvero semplice e permette di impostare dei valori di default in [...]

Lascia un commento

TAG XHTML PERMESSI: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> INSERIMENTO CODICE:
<pre></pre>         // blocco generico
[code][/code]       // blocco generico
[as][/as]           // Actionscript
[css][/css]         // CSS Style Sheet
[html][/html]       // HTML
[js][/js]           // Javascript
[objc][/objc]       // Objective-C
[php][/php]         // PHP
[sql][/sql]         // SQL