Las funciones son bloques de código reutilizables. En lugar de escribir el mismo código 10 veces, lo escribes una vez en una función y la llamas cuando la necesites. Son esenciales para código limpio y organizado.
Una función es un bloque de código que ejecuta una tarea específica.
<?php
// Definir una función
function saludar() {
echo "¡Hola, bienvenido!";
}
// Llamar la función
saludar(); // Imprime: ¡Hola, bienvenido!
saludar(); // Se puede llamar múltiples veces
?>
Reglas para nombrar funciones:
Los parámetros son valores que la función recibe para trabajar con ellos.
<?php
// Función con un parámetro
function saludar($nombre) {
echo "¡Hola, " . $nombre . "!";
}
saludar("Juan"); // ¡Hola, Juan!
saludar("Ana"); // ¡Hola, Ana!
// Función con múltiples parámetros
function sumar($a, $b) {
echo $a + $b;
}
sumar(5, 3); // 8
sumar(10, 20); // 30
?>
Usa return para devolver un resultado que puedas usar después.
<?php
// Función que devuelve un valor
function sumar($a, $b) {
return $a + $b;
}
$resultado = sumar(5, 3);
echo $resultado; // 8
// Usar directamente
echo sumar(10, 20); // 30
// Función que devuelve texto
function obtenerSaludo($nombre) {
return "Hola, " . $nombre;
}
echo obtenerSaludo("Pedro"); // Hola, Pedro
?>
Puedes asignar valores por defecto a los parámetros.
<?php
// Parámetro con valor por defecto
function saludar($nombre = "Visitante") {
echo "¡Hola, " . $nombre . "!";
}
saludar(); // ¡Hola, Visitante!
saludar("Juan"); // ¡Hola, Juan!
// Múltiples parámetros con valores por defecto
function calcularPrecio($precio, $impuesto = 0.21) {
return $precio * (1 + $impuesto);
}
echo calcularPrecio(100); // 121 (con impuesto por defecto)
echo calcularPrecio(100, 0.10); // 110 (con impuesto personalizado)
?>
Usa & para pasar un parámetro por referencia (modifica el original).
<?php
// Pasar por valor (por defecto)
function incrementar($numero) {
$numero++;
return $numero;
}
$x = 5;
echo incrementar($x); // 6
echo $x; // 5 (no cambió)
// Pasar por referencia
function incrementarRef(&$numero) {
$numero++;
}
$y = 5;
incrementarRef($y);
echo $y; // 6 (cambió)
?>
Las funciones pueden devolver arrays complejos.
<?php
// Función que devuelve un array
function obtenerDatos() {
return [
"nombre" => "Juan",
"edad" => 25,
"ciudad" => "Madrid"
];
}
$datos = obtenerDatos();
echo $datos["nombre"]; // Juan
// Función que devuelve múltiples valores
function obtenerEstadisticas() {
return [10, 20, 30];
}
// Desempacar valores
[$a, $b, $c] = obtenerEstadisticas();
echo $a; // 10
?>
Especifica qué tipo de dato espera la función.
<?php
// Con type hints
function sumar(int $a, int $b): int {
return $a + $b;
}
echo sumar(5, 3); // 8
// Función que devuelve string
function obtenerNombre(): string {
return "Juan";
}
// Función que devuelve array
function obtenerDatos(): array {
return ["nombre" => "Ana"];
}
?>
Funciones sin nombre, asignadas a variables.
<?php
// Función anónima
$saludar = function($nombre) {
return "Hola, " . $nombre;
};
echo $saludar("Juan"); // Hola, Juan
// Función anónima con use (acceder a variables externas)
$impuesto = 0.21;
$calcularPrecio = function($precio) use ($impuesto) {
return $precio * (1 + $impuesto);
};
echo $calcularPrecio(100); // 121
?>
PHP tiene muchas funciones ya creadas que puedes usar.
Obtiene la longitud de un string.
echo strlen("Hola"); // 4
Convierte a mayúsculas o minúsculas.
echo strtoupper("hola"); // HOLA
echo strtolower("HOLA"); // hola
Reemplaza texto.
echo str_replace("mundo", "PHP", "Hola mundo");
// Hola PHP
Divide o une strings.
$arr = explode(",", "a,b,c");
echo implode("-", $arr); // a-b-c
Verifica el tipo de dato.
is_array([1, 2]); // true
is_string("hola"); // true
is_int(42); // true
Funciones matemáticas.
abs(-5); // 5
round(3.7); // 4
ceil(3.2); // 4
floor(3.7); // 3
Usa funciones para validar datos de formularios.
<?php
function validarEmail(string $email): bool {
return filter_var($email, FILTER_VALIDATE_EMAIL) !== false;
}
function validarLongitud(string $texto, int $minimo): bool {
return strlen($texto) >= $minimo;
}
function procesarFormulario(array $datos): array {
$errores = [];
if (!validarEmail($datos["email"])) {
$errores[] = "Email inválido";
}
if (!validarLongitud($datos["nombre"], 3)) {
$errores[] = "El nombre debe tener al menos 3 caracteres";
}
return $errores;
}
// Usar la función
$datos = [
"nombre" => "Juan",
"email" => "juan@ejemplo.com"
];
$errores = procesarFormulario($datos);
if (empty($errores)) {
echo "Formulario válido";
} else {
foreach ($errores as $error) {
echo $error . "<br>";
}
}
?>
Crea un archivo funciones.php con un servidor local:
saludar() que imprima un saludo.saludar($nombre) que reciba un nombre e imprima un saludo personalizado.sumar($a, $b) que devuelva la suma.calcularPrecio($precio, $impuesto = 0.21) con parámetro por defecto.obtenerDatos() que devuelva un array asociativo.procesarArray($array) que recorra el array y devuelva la suma de todos sus valores.validarEmail($email) que verifique si un email es válido.obtenerMayuscula($texto) que devuelva el texto en mayúsculas.