Lecciones de PHP - Lección 7 - Funciones en PHP y programación funcional
Creo que ya hemos llegado al momento en que... es hora de empezar a programar. Después de esta lección, podrás decir que has programado en PHP. Muy a menudo tenemos que escribir código que se repite en otras páginas o archivos .php. Para no duplicar este código, en PHP existen las funciones.
Una función es una parte independiente del código que realiza ciertos cálculos. Hemos visto ejemplos de funciones en lecciones anteriores:
time()
– devuelve el número de segundos desde el inicio de la época Unix.
print()
, echo()
– muestran contenido HTML.
floor()
– devuelve la parte entera de un número decimal.
Como habrás notado, las funciones se indican con paréntesis ()
. La forma general es: nombre_de_función()
. Las reglas para nombrar funciones son las mismas que para variables, con la diferencia de que no se usa el signo de dólar $
y se incluyen los paréntesis.
¿De qué consta una función?
<?php function plus_one($x){ // definición de la función $x = $x + 1; // cuerpo de la función return $x; // valor de retorno } $y = 1; $y = plus_one($y); // llamada a la función print $y; ?>
Nombre de la función
- Debe comenzar con una letra o guion bajo
_
. - Puede contener letras, números y guion bajo (A-Z, 0-9, _).
- No puede contener espacios. Para nombres compuestos usa
my_function()
omyFunction()
.
Usamos la palabra clave function para definir una función nueva.
Cuerpo de la función
Es el código que se ejecuta cuando se llama la función. Se encierra entre llaves {}
.
Valor de retorno
El valor que sigue a la palabra return
es el resultado que devuelve la función. En el ejemplo anterior, se devuelve $x
.
Parámetros de la función
Son las variables o valores que se pasan entre paréntesis. Podemos pasar varios parámetros separados por comas:
<?php function myFunction($x1, $x2, $x3){ } $y = myFunction($z, 34, '¡Hola Mundo!'); ?>
Si el número de argumentos no coincide con lo definido, se genera un error:
<?php function myFunction($x1, $x2, $x3){ } $y = myFunction(34, '¡Hola Mundo!'); // Error: falta un parámetro ?>
Ejemplo: función matemática
Supongamos que tenemos una función y = -2x + 4
y queremos calcular su valor con distintos x
:
<?php function myFunction($x){ $y = -2 * $x + 4; return $y; } $z1 = myFunction(1); $z2 = myFunction(2); $z3 = myFunction(3); print $z1 . '<br />' . $z2 . '<br />' . $z3; ?>
El resultado será: -2, 0, 2. Así es como funcionan las funciones.
Programación funcional en PHP
Este paradigma se basa en el uso extensivo de funciones. Para organizar muchas funciones, las agrupamos por funcionalidad en distintos archivos.
Ejemplo:
<?php function incr($x){ $x++; return $x; } function decr($y){ $y--; return $y; } $z = 0; $z = incr($z); $z = incr($z); $z = incr($z); $z = incr($z); $z = decr($z); print $z; ?>
El resultado es 3, porque incrementamos 4 veces y luego decrementamos 1.
Ahora trasladamos las funciones a otro lugar en el archivo:
<?php $z = 0; $z = incr($z); $z = incr($z); $z = incr($z); $z = incr($z); $z = decr($z); print $z; function incr($x){ $x++; return $x; } function decr($y){ $y--; return $y; } ?>
El resultado sigue siendo 3. PHP encuentra la definición aunque esté más abajo en el archivo.
Organizar funciones en archivos:
Archivo decr.php
:
<?php function decr($y){ $y--; return $y; } ?>
Archivo incr.php
:
<?php function incr($x){ $x++; return $x; } ?>
Archivo index.php
:
<?php include 'incr.php'; include 'decr.php'; $z = 0; $z = incr($z); $z = incr($z); $z = incr($z); $z = incr($z); $z = decr($z); print $z; ?>
Este enfoque nos permite usar funciones desde otros archivos sin saturar index.php
. El resultado no cambia: sigue siendo 3.
Estas no son todas las posibilidades de la programación funcional en PHP. En próximas lecciones la estudiaremos más a fondo.