cyberlaura Posté 29 Juin 2009 Posté 29 Juin 2009 Bonjour à tous, je ne trouve nulle part de solution, mais cela m'étonne que ce ne soit pas possible. Alors voilà mon problème : J'ai une fonction avec des paramètres par défaut. Je voudrais ne passer que le troisième paramètre et conserver les valeurs par défaut des 2 premiers paramètres. Une petit bout de code pour mieux comprendre : function maFonction(param1='http://www.bijdsfjlsdfl.com/dfjdfhjfd/hdfjhjdf.js',param2='/home/web/procedures/monfichieraunomcompliqué.php',param3=true) {.........}maFonction (,,false); Si jamais quelqu'un avait la connaissance , merci d'avance...
SStephane Posté 29 Juin 2009 Posté 29 Juin 2009 Hormis inverser l'ordre de tes paramètres il n'y a pas de solution (remarque en php des fois on est surpris), crée une autre fonction qui appelle celle-ci avec un ordre différent sinon.
cyberlaura Posté 29 Juin 2009 Auteur Posté 29 Juin 2009 Merci SStephane, c'est effectivement une solution à laquelle je n'avais pas pensé, car pour inverser l'ordre de mes paramètres, il faudrait que je reprenne beaucoup d'appels et ça ne m'enchante guère...
Kioob Posté 29 Juin 2009 Posté 29 Juin 2009 Hello, chez nous on utilise parfois ça : function maFonction( $param1 = null, $param2 = null, $param3 = true) { if( $param1 === null ) $param1 = 'http://www.bijdsfjlsdfl.com/dfjdfhjfd/hdfjhjdf.js'; if( $param2 === null ) $param2 = '/home/web/procedures/monfichieraunomcompliqué.php';// [...]} Ainsi tu peux utiliser plusieurs combinaisons, du genre : maFonction(null, null, false);maFonction('toto', null, false); Même principe que pour certaines fonctions internes de PHP quoi.
cyberlaura Posté 29 Juin 2009 Auteur Posté 29 Juin 2009 Ah oui, c'est une autre solution. L'avantage d'une seule procédure, l'inconvénient d'un code un peu plus lourd. C'est tout de même la première fois que php me déçoit, d'autres langages permettent ce genre d'appels farfelus . Merci en tout cas à tous les 2, je n'ai plus qu'à choisir ma méthode.
Dan Posté 29 Juin 2009 Posté 29 Juin 2009 Ou plus simple, s'assurer que les arguments pour lesquels il y ait une valeur par défaut soient les derniers lors de la déclaration de fonction... (comme l'a précisé Sstephane) Note that when using default arguments, any defaults should be on the right side of any non-default arguments; otherwise, things will not work as expected. Mais dans ton cas, elles ont toutes une valeur par défaut Il te reste encore la possibilité de réécrire ta fonction avec une liste variable d'arguments, en utilisant func_num_args(), func_get_arg() ou func_get_args().
captain_torche Posté 29 Juin 2009 Posté 29 Juin 2009 La solution de Kioob est très facile à utiliser, et elle n'impactera pas tes scripts existants. Sers-t'en !
cyberlaura Posté 29 Juin 2009 Auteur Posté 29 Juin 2009 Oui, j'ai utilisé la méthode de Kioob qui fonctionne évidemment très bien. Grand merci à lui et à vous tous. Et sur ce, bonne nuit !
SStephane Posté 30 Juin 2009 Posté 30 Juin 2009 Dans ton cas,à ta fonction de base : function maFonction($param1='defaut',$param2='/path/to',param3=true) {//} tu ajoutes : function maFonction2($param3=true,$param2='/path/to',$param1='defaut') { return maFonction($param1,$param2,$param3);} et ainsi, tu n'as rien à modifier nulle part, la solution du "func_num_args(), func_get_arg() ou func_get_args()" de dans peut également être pas mal, tu peux aussi passer une collection en paramètre et la traiter si tes paramètres sont si volatiles.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant