Question

Je veux définir une doSomething(arg1, arg2) fonction avec des valeurs par défaut pour arg1 = val et arg2 = val

Quand j'écris

function doSomething($arg1="value1", $arg2="value2"){
 // do something
}

Est-il possible maintenant d'appeler doSomething avec arg1 par défaut et arg2 = "new_value2"

Était-ce utile?

La solution

Nope, malheureusement, cela est impossible. Si vous définissez $arg2, vous devrez définir $arg1 ainsi.

Autres conseils

Parfois, si j'ai beaucoup de paramètres avec les valeurs par défaut, je vais utiliser un tableau pour contenir les arguments et fusionner avec les valeurs par défaut.

public function doSomething($requiredArg, $optional = array())
{
   $defaults = array(
      'arg1' => 'default',
      'arg2' -> 'default'
   );

   $options = array_merge($defaults, $optional);
}

fait vraiment de sens que si vous avez beaucoup d'arguments cependant.

function doSomething( $arg1, $arg2 ) {
  if( $arg1 === NULL ) $arg1 = "value1";
  if( $arg2 === NULL ) $arg2 = "value2";
  ...
}

Et à l'appel:

doSomething();
doSomething(NULL, "notDefault");

Avez-vous déjà assign arg1 mais pas arg2? Sinon, j'intervertir l'ordre.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top