Pregunta

quiero definir un doSomething(arg1, arg2) función con valores por defecto a arg1 = val val y arg2 =

Cuando escribo

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

¿Es posible ahora llamar doSomething con arg1 defecto y arg2 = "new_value2"

¿Fue útil?

Solución

No, por desgracia, esto no es posible. Si define $arg2, tendrá que definir $arg1 también.

Otros consejos

A veces, si tengo una gran cantidad de parámetros con valores por defecto, voy a utilizar una matriz para contener los argumentos y fusionarlo con valores por defecto.

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

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

En realidad, sólo tiene sentido si usted tiene una gran cantidad de argumentos sin embargo.

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

Y a la llamada:

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

¿Le arg1 vez Asignar pero no arg2? Si no, entonces me gustaría cambiar el orden.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top