PHP lleva más de veinte años dando guerra en el mundo del desarrollo web. Aunque a veces le tiran piedras, sigue siendo la base de un montón de sitios dinámicos que usamos todos los días. Dominar cómo se estructuran las funciones en PHP no es solo cuestión de tener el código bonito; es que te ahorra dolores de cabeza, hace todo más fácil de leer y, sobre todo, te permite reutilizar bloques sin copiar y pegar como loco.
¿Qué es una función en PHP y para qué sirve?
Una función en PHP, a ver, no es otra cosa que un trozo de código al que puedes llamar cuando lo necesites. Sirve para hacer una tarea específica y puedes usarla tantas veces como quieras en distintos sitios del programa. Así evitas repetir lo mismo mil veces y si hay que cambiar algo, lo tocas solo una vez.
Por ejemplo:
- Si tienes una tienda online, podrías tener una función para calcular el total del carrito o para chequear si el correo que mete el usuario está bien escrito.
- En vez de copiar ese cálculo o validación por todas partes, lo metes en una función y listo: lo llamas cuando haga falta.
Cómo se define una función básica en PHP
La sintaxis básica no tiene mucha ciencia, pero ojo con los detalles:
function nombreFuncion() {
// aquí va tu código
}
- La palabra mágica es
function
(sin esto no va). - Luego pones el nombre (ojo, nada de espacios ni empezar con número).
- Entre paréntesis van los parámetros si los necesitas.
- Y después las llaves con el bloque de código.
Los nombres deberían contar algo sobre lo que hacen. Usa letras, números o guiones bajos… pero nunca inicies con número ni uses palabras reservadas del lenguaje.
Parámetros y valores por defecto: flexibilidad al máximo
Las funciones pueden recibir valores (parámetros) para trabajar con ellos. Ejemplo rápido:
function saludar($nombre) {
echo "Hola, $nombre!";
}
¿Y si no siempre tienes el dato a mano? Puedes ponerle un valor por defecto:
function saludar($nombre = "Invitado") {
echo "Hola, $nombre!";
}
Así si llamas a saludar()
sin pasar nada, te suelta “Hola, Invitado!”. Bastante útil para no romper nada.
Retornar valores: no todo es imprimir
No siempre quieres que la función muestre algo en pantalla. Muchas veces necesitas que devuelva un resultado para seguir usándolo después. Para eso está return
, que corta la función y manda el valor donde la llamaste.
function suma($a, $b) {
return $a $b;
}
$resultado = suma(5, 3); // $resultado es 8
Esto hace que tu código sea mucho más claro y potente. Puedes encadenar operaciones o guardar resultados para después.
Funciones con varios parámetros: ojo con el orden
Si tu función necesita más datos, ponlos todos entre paréntesis separados por comas:
function crearUsuario($nombre, $email, $edad = 0) {
// aquí creas el usuario
}
- Los parámetros con valor por defecto siempre van al final. Si no lo haces así, PHP se rompe.
- Mejor usa nombres claros y documenta bien si la cosa se complica.
Funciones anónimas y variables externas
PHP también deja crear funciones sin nombre (closures o funciones anónimas). Van genial cuando solo las vas a usar ahí mismo o quieres pasarlas como argumento.
$saludo = function($nombre) {
echo "Hola, $nombre!";
};
$saludo("Marta");
Si necesitas acceder a variables externas dentro del closure, usa use
para capturarlas.
Errores típicos al definir funciones
No te confíes: lo más fácil es olvidarse algún paréntesis o llave. Y eso da error sí o sí:
function miFuncion // falta paréntesis y llaves
echo "Hola";
Otros fallos comunes:
- Usar nombres reservados como
print
oarray
para tus funciones. - Definir dos funciones con el mismo nombre (no se puede).
- No validar los tipos o los valores esperados en los parámetros.
Sugerencias para mejorar tus funciones PHP
- Nombres descriptivos siempre, para funciones y parámetros.
- Comenta para qué sirve la función y qué tipo de datos espera/devuelve.
- Si la función hace muchas cosas distintas… divídela. Una cosa a la vez.
- Usa valores por defecto cuando tenga sentido.
- Prueba tus funciones con diferentes datos para evitar sorpresas.
Aplicando estos trucos tu código será mucho más limpio y fácil de mantener. Además, si otro tiene que meter mano después te lo agradecerá. Cada vez que escribas una función piensa: ¿lo va a entender alguien dentro de dos meses? ¿Puedo usar esto en otro proyecto? Así tus programas crecen ordenados y sin perder eficacia.