Veamos una función que permite argumentos opcionales:
Código
<?php // Funcion que acepta 2 parametros opcionales function dummy($parm1 = '', $parm2 = '') { echo "Parametro 1: $parm1 <br />"; echo "Parametro 2: $parm2 <br />"; } dummy('Hola','mundo!'); ?>
Ahora vamos a ver como crear una función que acepte cualquier numero de argumentos, para ello vamos a utilizar la función func_get_args , que devuelve un array numérico con los argumentos pasados a la función.
Código
<?php // La lista de argumentos es vacia function sinArgumentos() { // Devuelve un array con los argumentos // pasados a la funcion foreach ($argumentos as $k => $v) { echo "Argumento: ".($k+1).": $v <br />"; } } sinArgumentos(); // No imprime nada sinArgumentos('Hola', ' mundo ',' maravilloso!'); // Imprime los argumentos pasados ?>
Esta función nos puede ser muy útil si pensamos crear un pequeño framework o librería. Abajo dejo otro ejemplo con una función que suma un numero indefinido de números.
Código
<?php function suma(){ $s=0; /* * Comprueba si el valor introducido es un numero, * si no, se toma como un cero */ return $s; }; print suma(1,2,3,4,5,6,7,9,10); // Devuelve 47 print suma(1,3,3,7); // Devuelve 14 /* * Devuelve 10, ya que, el array y false lo * toman como un cero */ ?>
No es nada del otro mundo pero nos puede venir muy bien este tipo de funciones en nuestras aplicaciones. Seguramente muchos ya conocían esta función.