Funciones PHP

Funciones definidas por el usuario

Un ejemplo puede ser:
  function foo($arg1, $arg2, ..., $argN)
    {
      echo "Función ejemplo"
      return $value;
    }
Dentro de una función puede aparecer cualquier cosa, incluso otra función o definiciones de clase.
En PHP3 es necesario que una función esté declarada antes de ser referenciada, y en PHP4 esto no es necesario.
No es posible realizar sobrecarga de funciones o número variable de argumentos en PHP3 pero sí en PHP4, aunque esto se puede simular en PHP3 pasando un array de argumentos.
Respecto al paso de argumentos, son siempre pasados por valor y para pasarlos por referencia hay que indicarlo y se puede hacer de dos formas diferentes, en la definición de la función, anteponiendo el símbolo & al argumento que corresponda, en este caso la llamada será igual que la llamada a una función normal, o manteniendo la definición de la función normal y anteponer un & delante del argumento que corresponda en la llamada a la función.
PHP permite el mecanismo de argumentos por defecto. Un ejemplo de esta caracteristica es:

  function hacerCafe($tipo="capuchino")
  
  {
      return "he hecho un café $tipo\n";
    }
En la llamada a esta función se obtendrá una frase u otra según se llame:
  echo hacerCafe();
o
  echo hacerCafe("expreso");
En el caso de tratarse de una función con argumentos por defecto y argumentos normales, los argumentos por defecto deberán estar agrupados al final de la lista de argumentos.
En PHP4 el número de argumentos de una función definida por el usuario, puede ser variable, se utilizan las funciones func_num_args(), func_get_arg() y func_et_args().

Valores devueltos

A diferencia de C, PHP puede devolver cualquier número de valores, sólo hará falta recibir estos argumentos de la forma adecuada. Ejemplo:

  function numeros()    {
      return array(0,1,2);
    }
  list ($cero, $uno, $dos) = numeros();

Funciones Variables

Las funciones variables pueden ser una gran y potente herramienta en el procesamiento dínamico de un script. Ejemplo:
  <?php
  funcion foo()
    {
      echo "En foo()<br>\n"
    }
  function bar ($arg ='')
    {
      echo " bar();El argumento ha sido '$arg'.<br>\n"
    }
  $func = 'foo';
  $func();
  $func='bar';
  $func('test');
  ?>