Programación en PHP/Funciones

De Wikilibros, la colección de libros de texto de contenido libre.
Ir a la navegación Ir a la búsqueda

Las funciones son rutinas creadas por el programador para realizar procesos que se repetirán o se usarán más de una vez. Las funciones pueden ser n-paramétricas (con n ≥ 0), y estos parámetros pueden ser de entrada, de salida o de entrada y salida; aunque PHP no hace esta distinción del modo en que, por ejemplo, Ada (ver en Wikipedia), sí lo hace.

En PHP, todas las funciones devuelven un valor. Aquellas que no devuelvan uno explícitamente, devuelven NULL, siguiendo el principio de que todo en PHP es una expresión.

Introducción[editar]

Esta sería una llamada a una función sin parámetros:

 <?php
 function Hola(){
 $mensaje="Hola amigo";
 echo $mensaje;
 }
 ?>
 <html>
 <head>
 <title>Mi Página</title>
 </head>
 <body>
 <?php   
 Hola();
 ?>
 </body>
 </html>

El código superior ejecuta una llamada a la función

Hola()

, que imprimirá el texto "Hola amigo".


Funciones con parámetros.

Si necesitas una función a la cuál le puedas pasar parámetros, se escribiría del mismo modo, con el nombre de los parámetros entre los paréntesis, separados por comas. Para una función biparamétrica, el código podría ser algo como:


Crystal Clear app konsole.png
Función suma
 <?php 
 function suma($a, $b){
   return $a + $b;
 }
 
 $a = 1; $b = 2;
 echo "Sumemos $a + $b = " . suma($a, $b);
 ?>




Nótese que en este ejemplo hemos utilizado la palabra clave return. Esta palabra sirve para que la función devuelva valores al lugar en dónde se haya llamado.

A efectos prácticos digamos que la función se ejecuta en un entorno separado y se "sustituye" en tiempo de ejecución por el resultado devuelto por return en el contexto en el que se había llamado. En el ejemplo anterior, sumar($a, $b) === 3 (siendo === el operador de identidad).

Parámetros por defecto[editar]

En la definición formal de la función se pueden especificar parámetros por defecto, de tal modo que si no se pasa uno en el momento de llamarla, el parámetro toma un valor. Si este valor no se especifica, el intérprete devolverá un error en tiempo de ejecución por número de parámetros inválido.

Para especificarlos, se hace así:

Crystal Clear app konsole.png
Ejemplo de parámetros por defecto
  function test($parametro = 'valor') {
    /* operaciones */
    return $parametro
  }




Sobrecarga de funciones[editar]

Desde PHP4[Nota 1], se pueden sobrecargar funciones, esto es, definir funciones que aceptan distintos parámetros y puedan tener una lógica interna diferente.

Una función sobrecargada puede ser algo como:

Crystal Clear app konsole.png
Primer intento
function overload() {
  return array(1);
}

function overload($a) {
  return array(2, $a);
}

function overload($a, $b) {
  return array(3, array($a, $b));
}

function overload($a, $b, $c) {
  return array(4, array($a, $b, $c));
}




Falta decir que desde PHP5[Nota 1] las funciones sin parámetros especificados (con una lista vacía), pueden recibir cualquier número arbitrario de parámetros. La lista de funciones anteriores podría reescribirse como una sola, del siguiente modo:


Crystal Clear app konsole.png
Mejor aproximación
function not_overloaded() {
  return array(

func_num_args()PHP-Manual,

func_get_args()PHP-Manual

);
}




Un ejemplo que muestra los parámetros utilizados, típico en los libros, es el siguiente:


Crystal Clear app konsole.png
function abc
 function abc() {
   $array = func_get_args();
   $arrayCount = count($array);
   for($i = 0; $i < $arrayCount; $i++) {
     echo "Se utilizó como parámetro $i : {$array[$i]}";
   }
 }




Crystal Clear app konsole.png
Llamada a la función abc
abc('test', 'test2', 3, 4);
Crystal Clear mimetype document2.png
Resultado
Se utilizó como parámetro 0 : test
Se utilizó como parámetro 1 : test2
Se utilizó como parámetro 2 : 3
Se utilizó como parámetro 3 : 4




También se pueden crear funciones anónimas en tiempo de ejecución. Estas funciones son muy útiles en el lambda-cálculo, y se crean con create_functionPHP-Manual, con un string en el segundo parámetro que sería el código PHP que debe de realizar la función. En PHP6 se introduce un nuevo estilo de funciones anónimas que permite además asignar funciones a variables, así como se hace en otros lenguajes como JavaScript.

De este modo, el siguiente código sería válido en PHP6 o superior.


Crystal Clear app konsole.png
Código experimental
 $a = function($b) { return $b; };
if($a(45) == 45) echo "Bien!"; // Se imprime 'Bien!'




Notas[editar]

  1. 1,0 1,1 El autor no recuerda desde qué versión mínima, pero seguro que en PHP5 en todas