Programación en PHP/Funciones
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
editarEsta 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:
<?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
editarEn 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í:
function test($parametro = 'valor') {
/* operaciones */
return $parametro
}
Sobrecarga de funciones
editarDesde 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:
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:
Un ejemplo que muestra los parámetros utilizados, típico en los libros, es el siguiente:
function abc() {
$array = func_get_args();
$arrayCount = count($array);
for($i = 0; $i < $arrayCount; $i++) {
echo "Se utilizó como parámetro $i : {$array[$i]}";
}
}
abc('test', 'test2', 3, 4);
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.
$a = function($b) { return $b; };
if($a(45) == 45) echo "Bien!"; // Se imprime 'Bien!'