≡En resumen
- Una función PHP agrupa instrucciones bajo un nombre para ejecutarlas tantas veces como quieras con distintos datos.
- Se declara con function, puede recibir parámetros tipados y devolver un valor con return.
- PHP incluye de serie una enorme biblioteca de funciones nativas (strlen, array_map, date…) y tú puedes definir las tuyas.
- Además de las funciones con nombre existen las anónimas (closures), las funciones flecha y los callables de primera clase.
- El archivo functions.php de WordPress no es una función: es un archivo del tema donde se declaran funciones.
01 ¿Qué es una función en PHP?
El concepto viene de las matemáticas y de la programación estructurada: dividir un problema grande en piezas pequeñas con una responsabilidad clara. En el lenguaje PHP, que se ejecuta en el servidor, las funciones son la unidad básica para organizar la lógica de la parte back end de una web: validar formularios, calcular precios, consultar la base de datos o formatear fechas.
| Parte | Ejemplo | Para qué sirve |
|---|---|---|
| Palabra clave | function | Indica a PHP que empieza una declaración |
| Nombre | precioConIva | Identifica la función para llamarla |
| Parámetros | (float $precio) | Datos que recibe; pueden llevar tipo y valor por defecto |
| Tipo de retorno | : float | Declara qué devuelve (opcional, recomendable) |
| Cuerpo | { … } | Instrucciones que se ejecutan al llamarla |
| return | return $precio * 1.21; | Devuelve el resultado y termina la función |
02 Cómo declarar y llamar una función PHP
-
1
Elige un nombre descriptivo
Debe empezar por una letra o un guion bajo y seguir con letras, números o guiones bajos. Usa un verbo que diga qué hace: calcularTotal, enviarEmail, formatearFecha.
-
2
Define los parámetros
Entre paréntesis, separados por comas. Desde PHP 7 puedes indicar su tipo (int, string, array, bool…) y desde PHP 8 usar tipos unión como int|float.
-
3
Escribe el cuerpo
Entre llaves, las instrucciones que resuelven la tarea. Una función debería hacer una sola cosa y hacerla bien.
-
4
Devuelve el resultado
Con return. Si no hay return, la función devuelve null. Puedes declarar el tipo de retorno tras los dos puntos, o void si no devuelve nada.
-
5
Llámala
Escribe su nombre seguido de paréntesis con los argumentos: $total = calcularTotal($carrito);
function saludar(string $nombre, string $saludo = 'Hola'): string {
return "$saludo, $nombre";
}
echo saludar('Lucía'); muestra «Hola, Lucía» y echo saludar('Lucía', 'Buenos días'); muestra «Buenos días, Lucía». El segundo parámetro es opcional porque tiene un valor por defecto.
03 Parámetros, argumentos y valores de retorno
Los parámetros son las variables que declara la función; los argumentos, los valores concretos que le pasas al llamarla. PHP ofrece varias formas de recibirlos, y elegir bien evita errores difíciles de rastrear.
| Técnica | Sintaxis | Qué hace | Desde |
|---|---|---|---|
| Por valor | function f($x) | La función trabaja con una copia; el original no cambia | Siempre |
| Por referencia | function f(&$x) | La función modifica la variable original | Siempre |
| Valor por defecto | function f($x = 10) | El argumento pasa a ser opcional | Siempre |
| Variádicos | function f(...$numeros) | Acepta un número variable de argumentos en un array | PHP 5.6 |
| Tipos escalares y de retorno | function f(int $x): int | PHP comprueba el tipo de entrada y salida | PHP 7.0 |
| Argumentos con nombre | f(precio: 100, iva: 21) | Pasas argumentos por nombre, en cualquier orden | PHP 8.0 |
04 Tipos de funciones en PHP
Definidas por el usuario
Las que declaras tú con function para resolver la lógica de tu proyecto: calcular portes, validar un NIF, generar un slug.
Nativas o internas
Vienen con PHP y se usan sin declararlas: strlen(), str_contains(), array_filter(), date(), json_encode(). El manual las lista por extensión.
De extensiones
Funciones que solo existen si la extensión está instalada y activada en el servidor, como las de mysqli, gd (imágenes) o curl.
Anónimas (closures)
Funciones sin nombre que se guardan en una variable o se pasan como argumento: function ($x) use ($iva) { … }. Útiles como callbacks.
Funciones flecha
Versión corta de las anónimas desde PHP 7.4: fn($x) => $x * 2. Capturan automáticamente las variables del ámbito exterior.
Callables de primera clase
Desde PHP 8.1, strlen(...) crea un objeto Closure a partir de cualquier función o método para pasarlo como valor.
En proyectos modernos casi nunca escribirás funciones sueltas: se agrupan en clases (métodos) y se organizan con frameworks como Laravel, que ya traen decenas de funciones auxiliares (helpers). Aun así, entender la función es la base para leer cualquier código PHP, incluido el que expone o consume una API.
05 functions.php en WordPress: no es lo mismo que una función
- ✓Edita el functions.php de un tema hijo, no el del tema principal: si no, perderás los cambios en la próxima actualización.
- ✓Pon un prefijo único a tus funciones (por ejemplo, miweb_) para no chocar con las de plugins y evitar el error «Cannot redeclare».
- ✓Haz copia de seguridad antes de tocarlo: un punto y coma olvidado puede dejar la web en blanco.
- ✓Si el código es una funcionalidad y no algo visual, llévalo a un plugin propio para que no dependa del tema.
Si no sabes cómo crear uno, repasa qué es un tema hijo. Y si estas modificaciones se acumulan, conviene incluirlas en un plan de mantenimiento web con copias y entorno de pruebas.
06 Errores frecuentes con funciones PHP y cómo resolverlos
| Error | Causa probable | Solución |
|---|---|---|
| Call to undefined function | La función no está declarada, el archivo no se ha incluido o falta la extensión | Revisa el nombre, el include/require o activa la extensión en php.ini |
| Cannot redeclare | Dos funciones con el mismo nombre, o un archivo incluido dos veces | Usa require_once, prefijos o namespaces |
| ArgumentCountError | Faltan argumentos obligatorios | Pasa todos los argumentos o define valores por defecto |
| TypeError | El argumento o el retorno no coincide con el tipo declarado | Corrige el dato o el tipo declarado |
| Maximum function nesting / stack | Recursión sin condición de parada | Añade un caso base; el manual avisa de que más de 100-200 niveles pueden romper la pila |
07 Buenas prácticas para escribir funciones PHP
- ✓Una responsabilidad por función y nombres que describan la acción.
- ✓Declara tipos de parámetros y de retorno, y activa strict_types.
- ✓Pocos parámetros: si necesitas más de tres o cuatro, pasa un objeto o un array con nombre.
- ✓Evita variables globales: recibe lo que necesites por parámetro.
- ✓Documenta con PHPDoc lo que no se deduzca de la firma.
- ✓Escribe pruebas unitarias (PHPUnit o Pest) para las funciones con lógica de negocio.
Cuando un proyecto crece, estas prácticas marcan la diferencia entre un código que se mantiene y uno que hay que rehacer. Si necesitas una plataforma con esa base, nuestro equipo se dedica al desarrollo de aplicaciones web a medida en PHP y Laravel; para webs corporativas, trabajamos el diseño y desarrollo web completo.
Preguntas frecuentes sobre Función PHP
Es un bloque de código con nombre que recibe parámetros, realiza una tarea y puede devolver un valor con return. Se declara una vez y se llama tantas veces como haga falta.
Con la palabra clave function, el nombre, los parámetros entre paréntesis y el cuerpo entre llaves, por ejemplo: function sumar(int $a, int $b): int { return $a + $b; }.
El parámetro es la variable que declara la función ($precio); el argumento es el valor que le pasas al llamarla (100).
Devuelve null. Si declaras el tipo de retorno void, indicas explícitamente que no devuelve nada.
No. Los nombres de función no distinguen mayúsculas en los caracteres A-Z, aunque se recomienda llamarlas exactamente como se declararon. Las variables, en cambio, sí las distinguen.
Es una función sin nombre, también llamada closure, que se guarda en una variable o se pasa como argumento a otra función, por ejemplo a array_map.
Es un archivo del tema que WordPress carga automáticamente y donde se declaran funciones para añadir o modificar funcionalidades. Conviene editarlo en un tema hijo.
En el manual oficial de php.net, que tiene un índice de funciones y métodos agrupados por extensión, con ejemplos y el historial de cambios de cada una.
Fuentes consultadas
Sobre el autor
Development Manager en appyweb
Dirige el equipo de desarrollo de appyweb: aplicaciones web y móviles, SaaS, integraciones y arquitectura de software.
Ver perfil y artículos → Ver perfil en LinkedIn ↗