PHP fa Non ho argomenti con nome, quindi la risposta breve è no. Ci sono due soluzioni che riesco a trovare, anche se non sono così fantastiche.
Si potrebbe definire la funzione di prendere i suoi argomenti come un array, come this:
function image($img) {
$tag = '<img src="' . $img['src'] . '" ';
$tag .= 'alt="' . ($img['alt'] ? $img['alt'] : '') .'">';
return $tag;
}
$image = image(array('src' => 'cow.png', 'alt' => 'cows say moo'));
$image = image(array('src' => 'pig.jpeg'));
Questo metodo richiede, purtroppo, che si modifica la funzione, e di conseguenza non mi piace.L'altra opzione è quella di utilizzare this wrapper class che consente di utilizzare argomenti con nome in uno dei seguenti modi:
$obj->method(array('key' => 'value', 'key2' => 'value2'));
$obj->method(':key = value', ':key2 = value2');
Non fraintendetemi, ma, qual è il punto di questo quando il codice prodotto sarà completamente pasticcio? – Ben
Pensa ad altre lingue come R. Hai una funzione trama con, non so,> 20 parametri. Hanno tutti nomi e la maggior parte è facoltativa, solo i dati sono obbligatori. Puoi decidere di dare più parametri per personalizzare il disegno dando una coppia 'nome = valore'. Questo non produce disordine ed è IMO abbastanza carino. Quindi, la domanda ha almeno un punto. – agoldev
Python supporta anche questo. –