Domanda

voglio definire un doSomething(arg1, arg2) funzione con valori di default per arg1 = val e arg2 = val

Quando scrivo

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

E 'possibile ora chiamare doSomething con arg1 di default e arg2 = "new_value2"

È stato utile?

Soluzione

No, purtroppo, questo non è possibile. Se si definisce $arg2, è necessario definire $arg1 pure.

Altri suggerimenti

A volte, se ho un sacco di parametri con valori predefiniti, userò una matrice per contenere gli argomenti e si fondono con le impostazioni predefinite.

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

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

In realtà ha un senso solo se si dispone di un sacco di argomenti, però.

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

E per chiamata:

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

Ti arg1 mai assegnare ma non arg2? Se poi non mi piacerebbe passare l'ordine.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top