MÓDULO 1: BACKEND

Funciones

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.


1. Crear una Función Básica

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:

  • ✅ Comienza con una letra o guión bajo (_).
  • ✅ Solo contiene caracteres alfanuméricos y guiones bajos.
  • ✅ Los nombres son case-insensitive (saludar() = Saludar()).
  • ✅ Usa nombres descriptivos (calcularTotal, obtenerUsuario, etc.).

2. Funciones con Parámetros

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
?>

3. Funciones que Devuelven Valores

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
?>

4. Parámetros por Defecto

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)
?>

5. Pasar Parámetros por Referencia

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ó)
?>

6. Funciones que Devuelven Arrays

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
?>

7. Type Hints (Indicadores de Tipo)

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"];
  }
?>

8. Funciones Anónimas (Closures)

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
?>

9. Funciones Predefinidas Útiles

PHP tiene muchas funciones ya creadas que puedes usar.

strlen()

Obtiene la longitud de un string.

echo strlen("Hola"); // 4

strtoupper() / strtolower()

Convierte a mayúsculas o minúsculas.

echo strtoupper("hola"); // HOLA
echo strtolower("HOLA"); // hola

str_replace()

Reemplaza texto.

echo str_replace("mundo", "PHP", "Hola mundo");
// Hola PHP

explode() / implode()

Divide o une strings.

$arr = explode(",", "a,b,c");
echo implode("-", $arr); // a-b-c

is_array() / is_string() / is_int()

Verifica el tipo de dato.

is_array([1, 2]); // true
is_string("hola"); // true
is_int(42); // true

abs() / round() / ceil() / floor()

Funciones matemáticas.

abs(-5); // 5
round(3.7); // 4
ceil(3.2); // 4
floor(3.7); // 3

10. Caso Práctico: Validar Formulario

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>";
    }
  }
?>

🛠️ Tu Misión

Crea un archivo funciones.php con un servidor local:

  1. Crea una función saludar() que imprima un saludo.
  2. Crea una función saludar($nombre) que reciba un nombre e imprima un saludo personalizado.
  3. Crea una función sumar($a, $b) que devuelva la suma.
  4. Crea una función calcularPrecio($precio, $impuesto = 0.21) con parámetro por defecto.
  5. Crea una función obtenerDatos() que devuelva un array asociativo.
  6. Crea una función procesarArray($array) que recorra el array y devuelva la suma de todos sus valores.
  7. Crea una función validarEmail($email) que verifique si un email es válido.
  8. Crea una función obtenerMayuscula($texto) que devuelva el texto en mayúsculas.
  9. Crea una función anónima que multiplique dos números.
  10. Bonus: Crea un sistema de validación de formulario con múltiples funciones (validarNombre, validarEmail, validarContraseña, procesarFormulario).
← Lección Anterior