Ce n’est pas tout à fait la première fois que le sujet était évoqué, mais avec PHP 7 en approche, voici une RFC qui est revenue sur le devant de la scène : Skipping optional parameters for functions.
- URL : https://wiki.php.net/rfc/skipparams
- Version cible : PHP 7
Aujourd’hui, lorsque l’on souhaite appeler une fonction qui accepte des paramètres optionnels, il est impératif de spécifier la valeur de tous les paramètres jusqu’au dernier qui nous intéresse — y compris si nous voulons utiliser la valeur par défaut des précédents.
Par exemple, considérons une fonction définie ainsi :
Pour appeler cette fonction en passant true
en dernier paramètre, en conservant la valeur par défaut pour le second, nous devons écrire ceci :
Nous devons ainsi, lors de l’appel, passer la valeur "world"
en second paramètre, alors que ce que nous voulions réellement faire était passer la valeur par défaut.
Cette RFC vise à répondre à cette problématique en permettant l’usage du mot-clef default
à la place du passage de paramètres optionnels, pour ceux dont nous souhaitons utiliser la valeur par défaut.
L’exemple d’appel reproduit plus haut deviendrait donc :
Les votes pour cette RFC ont été ouverts le 08 février 2015 et clôturés le 21 février 2015.
Nous avons exprimé notre avis, négatif, sur internals@
: principalement, l’approche proposée nous semblait trop bidouille et nous préférerions bénéficier de paramètres nommés, même si ceux-ci n’arriveront probablement pas pour PHP 7.0 (et que la RFC citée ici n’était pas incompatible avec cette idée).
Cette RFC a finalement été rejetée, avec 17 votes « pour » et 27 votes « contre ».
Ça serait bien qu’il y ait une solution pour ça. Surtout qu’il n’est pas possible d’avoir plusieurs signatures pour un même nom de méthode, comme en Java. D’ailleurs, ce problème existe aussi en JS, et pas de solution proposée pour l’instant si ce n’est passer par des « listes d’options » (très utilisé côté Jquery).