Comme mentionné ci-dessus, vous ne pourrez pas ignorer les paramètres. J'ai écrit cette réponse pour fournir un addendum, qui était trop volumineux pour être placé dans un commentaire.
@Frank Nocke propose d'appeler la fonction avec ses paramètres par défaut, donc par exemple avoir
function a($b=0, $c=NULL, $d=''){ //...
Tu devrais utiliser
$var = a(0, NULL, 'ddd');
ce qui revient fonctionnellement à omettre les deux premiers paramètres ( $b
et $c
).
On ne sait pas lesquels sont les valeurs par défaut (est 0
tapé pour fournir la valeur par défaut, ou est-ce important?).
Il existe également un risque que le problème des valeurs par défaut soit lié à une fonction externe (ou intégrée), lorsque les valeurs par défaut pourraient être modifiées par l'auteur de la fonction (ou de la méthode). Donc, si vous ne changez pas votre appel dans le programme, vous pourriez involontairement changer son comportement.
Une solution de contournement pourrait être de définir des constantes globales, comme DEFAULT_A_B
ce serait «valeur par défaut du paramètre B de la fonction A» et «omettre» les paramètres de cette façon:
$var = a(DEFAULT_A_B, DEFAULT_A_C, 'ddd');
Pour les classes, il est plus facile et plus élégant de définir des constantes de classe, car elles font partie de la portée globale, par exemple.
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.
Notez que cette constante par défaut est définie exactement une fois dans tout le code (il n'y a pas de valeur même dans la déclaration de méthode), donc en cas de changements inattendus, vous fournirez toujours la fonction / méthode avec la valeur par défaut correcte.
La clarté de cette solution est bien sûr meilleure que de fournir des valeurs brutes par défaut (comme NULL
, 0
etc.) qui ne disent rien au lecteur.
(Je suis d'accord qu'appeler comme $var = a(,,'ddd');
serait la meilleure option)