Una función es un bloque de código que realiza una tarea específica y puede ser reutilizado a lo largo de tu programa. Las funciones ayudan a organizar tu código, evitar la repetición y hacerlo más legible y mantenible.
PHP ofrece más de 1000 funciones integradas, y también nos permite crear nuestras propias funciones personalizadas.
function nombreFuncion($parametro1, $parametro2, ...) {
// Código a ejecutar
return $valor; // Opcional: valor a devolver
}
Veamos un ejemplo básico de cómo crear y llamar a una función:
<?php
function saludar($nombre) {
echo "¡Hola, $nombre! ¿Cómo estás?";
}
saludar("Juan");
?>
calcularTotal()
, obtenerUsuario()
).
Los parámetros son variables que se utilizan para recibir valores cuando se llama a la función.
Por defecto, los parámetros son obligatorios y deben proporcionarse en el mismo orden en que están definidos:
<?php
function calcularAreaRectangulo($longitud, $anchura) {
$area = $longitud * $anchura;
echo "El área del rectángulo es: $area";
}
calcularAreaRectangulo(10, 5);
?>
Los parámetros pueden tener valores por defecto que se utilizan cuando no se proporciona un argumento:
<?php
function calcularAreaCirculo($radio, $pi = 3.14159) {
$area = $pi * $radio * $radio;
echo "El área del círculo es: $area";
}
calcularAreaCirculo(5);
calcularAreaCirculo(5, 3.14);
?>
A partir de PHP 5.6, podemos usar el operador ...
(operador de dispersión o spread) para crear funciones que acepten un número variable de argumentos:
<?php
function sumar(...$numeros) {
$total = 0;
foreach ($numeros as $numero) {
$total += $numero;
}
return $total;
}
echo "La suma de 3, 5 y 8 es: " . sumar(3, 5, 8);
?>
Las funciones pueden devolver valores mediante la instrucción return
. Cuando se ejecuta un return
, la función termina y devuelve el valor especificado.
<?php
function multiplicar($a, $b) {
$resultado = $a * $b;
return $resultado;
}
$producto = multiplicar(4, 5);
echo "4 x 5 = $producto";
?>
Una función puede devolver múltiples valores usando un array o, a partir de PHP 7, utilizando la desestructuración de arrays:
<?php
function obtenerPersona() {
$nombre = "Juan";
$edad = 25;
return [$nombre, $edad];
}
[$nombre, $edad] = obtenerPersona();
echo "Nombre: $nombre, Edad: $edad";
?>
Las funciones anónimas o closures son funciones sin nombre, que pueden asignarse a variables o pasarse como argumentos a otras funciones:
<?php
$saludo = function($nombre) {
return "¡Hola, $nombre!";
};
echo $saludo("Ana");
?>
array_map
, array_filter
, etc.
A partir de PHP 7.4, PHP introdujo funciones de flecha, que son una sintaxis más concisa para funciones anónimas simples:
<?php
$numeros = [1, 2, 3];
$cuadrados = array_map(fn($n) => $n * $n, $numeros);
echo "Cuadrados: " . implode(", ", $cuadrados);
?>
return
)use
)PHP tiene muchas funciones integradas útiles:
strlen($str)
: Devuelve la longitud de una cadenastrpos($haystack, $needle)
: Busca un substring en una cadenastr_replace($search, $replace, $subject)
: Reemplaza textostrtolower($str)
/ strtoupper($str)
: Convierte a minúsculas/mayúsculastrim($str)
: Elimina espacios en blanco al principio y al finalcount($array)
: Cuenta los elementos de un arraysort($array)
/ rsort($array)
: Ordena un arrayarray_push($array, $value)
: Añade un elemento al finalarray_merge($array1, $array2)
: Fusiona arraysin_array($needle, $haystack)
: Comprueba si un valor existe
<?php
$texto = "Hola, Mundo PHP!";
echo "Texto original: $texto";
?>
Es una buena práctica documentar tus funciones para facilitar su uso y mantenimiento. PHP usa un formato similar a JavaDoc llamado PHPDoc:
<?php
/**
* Calcula el total con impuestos para un precio dado.
*
* @param float $precio El precio sin impuestos
* @param float $tasaImpuesto La tasa de impuesto (por defecto: 0.16 o 16%)
* @return float El precio con impuestos aplicados
*/
function calcularTotalConImpuestos($precio, $tasaImpuesto = 0.16) {
if ($precio < 0) {
throw new InvalidArgumentException("El precio no puede ser negativo");
}
$total = $precio * (1 + $tasaImpuesto);
return $total;
}
?>
Crea un conjunto de funciones para calcular estadísticas básicas de un conjunto de números:
calcularPromedio($numeros)
que reciba un array de números y devuelva su promedioencontrarMaximo($numeros)
que devuelva el número más altoencontrarMinimo($numeros)
que devuelva el número más bajocalcularEstadisticas($numeros)
que utilice las funciones anteriores y devuelva un array asociativo con todas las estadísticasPistas:
$datos = [15, 8, 23, 10, 42, 7, 30];
array_sum()
y count()
max()
y min()
o implementarlos manualmente