W3docs

Funciones PHP: Comprensión y uso en tu código

Las funciones son un concepto clave en PHP: hacen el código modular, reutilizable y organizado, y permiten a los desarrolladores escribir lógica una vez y reutilizarla.

Una función es un bloque de código con nombre que realiza una tarea específica. Las funciones son uno de los bloques de construcción más importantes en PHP: te permiten escribir una pieza de lógica una vez y reutilizarla en cualquier lugar, en lugar de copiar el mismo código en muchos sitios. Esta página explica cómo definir y llamar funciones, cómo pasar argumentos (incluyendo valores predeterminados, declaraciones de tipo, por referencia y listas de argumentos variables), cómo funcionan los valores de retorno y las reglas de alcance que determinan qué variables puede ver una función.

¿Qué es una función PHP?

Una función PHP es un bloque de código reutilizable que se ejecuta solo cuando la llamas. Declaras una función con la palabra clave function, seguida de un nombre, un par de paréntesis con los parámetros (las entradas que acepta la función) y un cuerpo entre { }. Una función puede devolver opcionalmente un valor con la palabra clave return.

La forma general de una función es la siguiente:

function functionName($parameter1, $parameter2) {
    // code to run when the function is called
    return $result; // optional
}

Algunas reglas de nomenclatura: el nombre de una función debe comenzar con una letra o guion bajo, puede contener letras, números y guiones bajos, y es insensible a mayúsculas y minúsculas (sayHello() y SayHello() llaman a la misma función). Por convención, la mayoría del código PHP moderno usa camelCase o snake_case para las funciones definidas por el usuario.

¿Por qué usar funciones PHP?

Usar funciones tiene varios beneficios concretos:

  • Reutilización. Escribe la lógica una vez y llámala tantas veces como necesites. Cambiar el comportamiento significa editar un solo lugar en vez de buscar cada copia.
  • Legibilidad. Una función con buen nombre (calculateTax()) le dice al lector qué sucede sin obligarlo a leer cómo.
  • Modularidad. Dividir una tarea compleja en funciones más pequeñas hace que cada pieza sea más fácil de entender, probar y depurar.
  • Menos errores. Menos código duplicado significa menos lugares donde puede esconderse el mismo error.

Cómo definir y llamar una función

Definir una función no hace nada por sí solo — el cuerpo solo se ejecuta cuando la llamas escribiendo su nombre seguido de paréntesis. El ejemplo siguiente define una función sin parámetros y luego la llama dos veces.

<?php

function greet() {
    echo "Hello from a function!\n";
}

greet(); // call it
greet(); // call it again

?>

Salida:

Hello from a function!
Hello from a function!

Función simple que devuelve un valor

Una función que no toma parámetros y devuelve un string:

php— editable, runs on the server

Salida: Hello, World!

Parámetros y argumentos de una función

Un parámetro es la variable nombrada en la definición de la función; un argumento es el valor real que pasas al llamarla. PHP te ofrece varias formas de trabajar con ellos.

Pasar argumentos

La siguiente función toma dos parámetros y devuelve su suma. Pasamos 5 y 10 como argumentos.

php— editable, runs on the server

Salida: 15

Valores de parámetros predeterminados

Un parámetro puede tener un valor predeterminado, que se usa cuando quien llama omite ese argumento. Los parámetros con valores predeterminados deben ir después de los obligatorios.

<?php

function greet($name, $greeting = "Hello") {
    return "$greeting, $name!";
}

echo greet("Anna") . "\n";          // uses the default greeting
echo greet("Anna", "Welcome");      // overrides the default

?>

Salida:

Hello, Anna!
Welcome, Anna!

Declaraciones de tipo

Puedes declarar el tipo esperado de cada parámetro y del valor de retorno. Esto hace que la función sea autodocumentada y permite a PHP lanzar un error cuando recibe un tipo incorrecto.

<?php

function multiply(int $a, int $b): int {
    return $a * $b;
}

echo multiply(4, 3);

?>

Salida: 12

Pasar argumentos por referencia

Por defecto, PHP pasa los argumentos por valor — la función trabaja sobre una copia y la variable original no cambia. Antepón & a un parámetro para pasarlo por referencia, permitiendo que la función modifique directamente la variable del llamador.

<?php

function addOne(&$number) {
    $number++;
}

$count = 10;
addOne($count);
echo $count;

?>

Salida: 11

Listas de argumentos de longitud variable

Cuando no sabes cuántos argumentos se pasarán, el operador ... (splat) los recopila todos en un array.

<?php

function sumAll(...$numbers) {
    return array_sum($numbers);
}

echo sumAll(1, 2, 3, 4, 5);

?>

Salida: 15

Retorno de valores

Una función devuelve un valor con la palabra clave return. return también detiene la función inmediatamente — cualquier código después de ella se omite. Una función sin return (o return; sin valor) devuelve null. Para devolver varios valores a la vez, devuelve un array (o list() puede desempaquetarlo en el lado receptor).

<?php

function minMax($a, $b) {
    if ($a < $b) {
        return [$a, $b]; // returns and exits here
    }
    return [$b, $a];
}

[$min, $max] = minMax(8, 3);
echo "Min: $min, Max: $max";

?>

Salida: Min: 3, Max: 8

Para un análisis más profundo, consulta el capítulo sobre la sentencia return de PHP.

Alcance de las variables

Las variables creadas dentro de una función son locales a esa función — no existen fuera de ella, y la función no puede ver las variables definidas en el ámbito circundante (global) a menos que las importes con la palabra clave global o las pases como argumentos.

<?php

$message = "outside";

function showScope() {
    // $message from the global scope is NOT visible here
    $message = "inside";
    echo $message;
}

showScope();        // prints the local value
echo "\n";
echo $message;      // prints the global value, untouched

?>

Salida:

inside
outside

El alcance es una fuente común de confusión para los principiantes — el capítulo sobre el alcance de variables en PHP explica global, static y las variables locales en detalle. Consulta también el capítulo sobre Variables PHP para los fundamentos.

Errores comunes que debes evitar

  • Llamar a una función antes de que devuelva lo que esperas — recuerda que return solo entrega un valor; aún necesitas hacer echo o almacenarlo. add(5, 10); por sí solo no produce nada visible.
  • Poner un parámetro predeterminado antes de uno obligatorio — PHP requiere que los valores predeterminados vayan al final.
  • Esperar que los cambios se propaguen hacia afuera — sin &, modificar un parámetro dentro de una función no cambia la variable del llamador.
  • Redeclarar un nombre de función — no puedes definir dos funciones con el mismo nombre; PHP lanza un error fatal.

Conclusión

Las funciones PHP son la base del código organizado y reutilizable. Una vez que te sientas cómodo definiendo funciones, pasando argumentos (con valores predeterminados, tipos, referencias y variadics), retornando valores y razonando sobre el alcance, podrás dividir cualquier problema grande en piezas limpias y testeables. A continuación, explora el trabajo con Arrays PHP y Strings PHP, sobre los que las funciones operan frecuentemente.

Práctica

Práctica
¿Cuáles son las características clave de las funciones en PHP?
¿Cuáles son las características clave de las funciones en PHP?
Was this page helpful?