Wordpress: wp_parse_args()
lunedì 5 gennaio, 2009La funzione wp_parse_args() (come molte altre non documentata) elabora una stringa nel formato:
-
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
-
/**
-
* Merge user defined arguments into defaults array.
-
*
-
* This function is used throughout WordPress to allow for both string or array
-
* to be merged into another array.
-
*
-
* @since 2.2.0
-
*
-
* @param (string|array) $args Value to merge with $defaults
-
* @param (array) $defaults Array that serves as the defaults.
-
* @return (array) Merged user defined values with defaults.
-
*/
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:
-
function myFunc( $args ) {}
Dove è $args sarà la nostra stringa nel formato:
-
var1=value1&var2=value2...varn=valuen
Una possibile chiamata potrebbe essere:
-
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():
-
function myFunc( $args ) {
-
$new_args = wp_parse_args( $args );
-
//
-
echo $new_args["par1"];
-
echo $new_args["par2"];
-
echo $new_args["par3"];
-
}
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():
-
function myFunc( $args ) {
-
"par2" => "come",
-
"par3" => "va?" );
-
//
-
$new_args = wp_parse_args( $args, $default );
-
//
-
echo $new_args["par1"];
-
echo $new_args["par2"];
-
echo $new_args["par3"];
-
}
-
//
-
myFunc( "par3=stai&par1=tu" );
-
// avremmo
-
// tu
-
// come
-
// 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()










19

[...] approfondire consulta articolo originale: Wordpress: wp_parse_args() | Undolog.com Author: [...]
[...] la lettura con la fonte di questo articolo: Wordpress: wp_parse_args() | Undolog.com Author: [...]
[...] a come abbiamo visto in Wordpress: wp_parse_args() , la gestione degli attributi è davvero semplice e permette di impostare dei valori di default in [...]