Pergunta

Eu quero definir uma função doSomething(arg1, arg2) com valores padrão para arg1 = val e arg2 = val

Quando eu escrevo

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

É possível agora ligar para o Dosomething com o padrão arg1 e arg2 = "new_value2"

Foi útil?

Solução

Não, infelizmente, isso não é possível. Se você definir $arg2, você precisará definir $arg1 também.

Outras dicas

Às vezes, se eu tiver muitos parâmetros com padrões, usarei uma matriz para conter os argumentos e mesclá -lo com os padrões.

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

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

Realmente só faz sentido se você tiver muitos argumentos.

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

E para ligar:

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

Você já atribuiu Arg1, mas não Arg2? Caso contrário, eu alteraria o pedido.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top