Come accennato in precedenza, non sarai in grado di saltare i parametri. Ho scritto questa risposta per fornire qualche aggiunta, che era troppo grande per essere inserita in un commento.
@Frank Nocke propone di chiamare la funzione con i suoi parametri di default, quindi per esempio avere
function a($b=0, $c=NULL, $d=''){ //...
dovresti usare
$var = a(0, NULL, 'ddd');
che funzionalmente sarà uguale all'omissione dei primi due ( $b
e $c
) parametri.
Non è chiaro quali siano i valori predefiniti (viene 0
digitato per fornire il valore predefinito o è importante?).
Esiste anche il pericolo che il problema dei valori predefiniti sia collegato a una funzione esterna (o incorporata), quando i valori predefiniti potrebbero essere modificati dall'autore della funzione (o del metodo). Quindi, se non modifichi la chiamata nel programma, potresti modificarne involontariamente il comportamento.
Una soluzione alternativa potrebbe essere quella di definire alcune costanti globali, come il DEFAULT_A_B
"valore predefinito del parametro B della funzione A" e i parametri "ometti" in questo modo:
$var = a(DEFAULT_A_B, DEFAULT_A_C, 'ddd');
Per le classi è più semplice ed elegante definire costanti di classe, perché fanno parte dell'ambito globale, ad es.
class MyObjectClass {
const DEFAULT_A_B = 0;
function a($b = self::DEFAULT_A_B){
// method body
}
}
$obj = new MyObjectClass();
$var = $obj->a(MyObjectClass::DEFAULT_A_B); //etc.
Si noti che questa costante predefinita è definita esattamente una volta in tutto il codice (non c'è alcun valore anche nella dichiarazione del metodo), quindi in caso di modifiche impreviste, si fornirà sempre alla funzione / metodo il valore predefinito corretto.
La chiarezza di questa soluzione è ovviamente migliore che fornire valori di default grezzi (come NULL
, 0
ecc.) Che non dicono nulla a un lettore.
(Sono d'accordo che chiamare come $var = a(,,'ddd');
sarebbe l'opzione migliore)