Aller au contenu

Valeur par défaut pour des paramètres de fonction


Sujets conseillés

Posté

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 :smartass: , merci d'avance...

Posté

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.

Posté

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...

Posté

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.

Posté

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 :whistling: .

Merci en tout cas à tous les 2, je n'ai plus qu'à choisir ma méthode.

Posté

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().

Posté

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 !

Posté

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.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...