Diferencia entre revisiones de «Programación en PHP/Funciones»
Contenido eliminado Contenido añadido
m Revertidos los cambios de 201.116.114.165 (disc.) a la última edición de 200.45.59.241 |
Sin resumen de edición |
||
Línea 1:
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]] ([[wp:Ada|ver en Wikipedia]]), sí lo hace.
{{CodigoPHP:Tip|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 =
Esta sería una llamada a una función sin parámetros:
<source lang="php">
Línea 24 ⟶ 26:
</source>
'''Funciones con
Si necesitas una función a la cuál le puedas pasar parámetros,
{{CodigoPHP:Codigo|Función suma|<source lang="php">
<?php
function
return $a + $b;
}
$a = 1; $b = 2;
echo "Sumemos $a + $b = " . suma($a, $b);
?>
</source>|Resultado|Sumemos 1 + 2 = 3}}
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 ==
En la definición formal de la función se pueden especificar parámtros 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í:
{{CodigoPHP:Codigo|Ejemplo de parámetros por defecto|<source lang="php">
function test($parametro = 'valor') {
/* operaciones */
return $parametro
}
</source>}}
= Sobrecarga de funciones =
Desde PHP4<ref name="overload1" group="Nota">El autor no recuerda desde qué versión mínima, pero seguro que en PHP5 en todas</ref>, 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:
{{CodigoPHP:Codigo|Primer intento|<source lang="php">
function overload() {
return array(1);
}
function overload($a) {
return array(2, $a);
}
function overload($a, $b) {
return array(3, array($a, $b));
}
function oveload($a, $b, $c) {
return array(4, array($a, $b, $c));
}
</source>}}
Falta decir que desde PHP5<ref name="overload1" group="Nota" /> 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:
{{CodigoPHP:Codigo|Mejor aproximación|<source lang="php">
function not_overloaded() {
return array(</source>
{{manual_php|func_num_args|func_num_args()}},
{{manual_php|func_get_args|func_get_args()}}
<source lang="php">);
}</source>}}
Un ejemplo que muestra los parámetros utilizados, típico en los libros, es el siguiente:
{{CodigoPHP:Codigo|function abc|<source lang="php">
function abc() {
$array = func_get_args();
for($i = 0; $i < $arrayCount; $i++) {
echo "Se utilizó como parámetro $i : {$array[$i]}";
}
}
</source>}}
<source lang="php">abc('test', 'test2', 3, 4);</source>
|Resultado|
<source lang="text">
Se utilizó como parámetro 0 : test
Línea 106 ⟶ 113:
Se utilizó como parámetro 2 : 3
Se utilizó como parámetro 3 : 4
</source>}}
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 {{manual php|create_function}}, 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'''.
{{CodigoPHP:Codigo|Código experimental|<source lang="php"> $a = function($b) { return $b; };
if($a(45) == 45) echo "Bien!"; // Se imprime 'Bien!'</source>}}
= Notas =
<references group="Nota" />
|