Guías profesionales de php

Funciones en PHP explicadas de forma simple

04-07-2025 | PHP function 4 min

El concepto matemático dice: "Una función es una caja negra que recibe una entrada, hace un proceso y devuelve una salida". En programación, es igual: una función es un bloque de código que realiza una tarea específica, y puede recibir parámetros de entrada y devolver un resultado como salida.

  • Entrada: 5.
  • Proceso: Sumar 10.
  • Salida: 15.
function sumTen($number) {
    return $number + 10;
}

echo sumTen(5); // Imprime 15

Ejemplos de funciones en PHP

Veamos inicialmente la estructura correcta de una función en PHP:

function functionName($param1, $param2, ... $paramN) {
    // ...

    return $result;
}

Reglas principales:

  1. Al momento de escribir su nombre se recomienda usar el formato camelCase, en nuestro ejemplo anterior functionName.
  2. Deben devolver un valor usando la instrucción return y no imprimir directamente con echo, print u otras.
  3. Los parámetros son opcionales; simplemente puede no tenerlos.
  4. Pueden ser llamadas antes de su definición, a menos que estén definidas condicionalmente.
  5. No deben tener múltiples tareas; cada función debe realizar una única tarea específica.

Ejemplo básico

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

echo greet('Graaan'); // Imprime "Hello, Graaan!"

Aquí, la función greet toma a $name y devuelve un saludo personalizado. Es un ejemplo simple que muestra cómo funcionan y su estructura básica.

Valores por defecto

function greet($name = 'Sr./Sra. Guest') {
    return "Hello, $name!";
}

echo greet(); // Imprime "Hello, Sr./Sra. Guest!"

Como puedes ver, si un parámetro tiene un valor por defecto, no es necesario pasarlo al llamar a la función.

Tipos de parámetros y retorno

Desde PHP 7, puedes especificar tipos para los parámetros y para el valor de retorno.

Esto es profesional, y su ventaja es que el intérprete de PHP validará que los valores pasados y retornados coincidan con los tipos especificados, esto ayuda muchísimo a evitar errores.

Ejemplo 1:

function greet(string $name): string {
    return "Hello, $name!";
}

echo greet('Graaan'); // Imprime "Hello, Graaan!"

Ejemplo 2:

function add(int $numA, int $numB): int {
    return $numA + $numB;
}

echo add(3, 9); // Imprime 12

Número variable de argumentos

Puedes definir una función que acepte un número variable de argumentos usando los tres puntos ... llamado también operador de descomposición o splat operator:

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

echo sumAll(3, 6, 9); // Imprime 18

Aclaración:

  • Un parámetro es la variable que se define en la función, por ejemplo $number, $name, $numA, etc.
  • Un argumento es el valor que se pasa a la función cuando se llama, por ejemplo 3, 6, 9, 'Graaan', etc.

Por eso decimos Número variable de argumentos, porque hay varios valores dentro del mismo parámetro $numbers.

Otro tema curiosos es que las funciones pueden ser llamadas antes de su definición, a menos que existan condiciones que lo impidan.

Funciona:

echo multiply(3, 4); // Imprime 12

function multiply($numA, $numB) {
    return $numA * $numB;
}

Si hay condiciones, no funciona:

echo multiply(3, 4); // Uncaught Error: Call to undefined function multiply()

$active = false; // o true

if ($active) {
    function multiply($numA, $numB) {
        return $numA * $numB;
    }
}

Cuando existe una condición, la función no se define hasta que la ejecución del programa llegue a esa línea. En estos casos, por ejemplo, echo multiply(3, 4) debe ir después del bloque condicional para que funcione, además de que se debe cumplir la condición, es decir, $active debe ser true.

Ejemplo básico con recursividad

Hay un ejemplo clásico de función recursiva que calcula el factorial de un número, que se ve mucho en matemáticas y en ejercicios universitarios:

function factorial($num) {
    if ($num <= 1) {
        return 1;
    } else {
        return $num * factorial($num - 1);
    }
}

echo factorial(3); // Imprime 6 (3 * 2 * 1)

Un factorial es el producto (multiplicación) de todos los números enteros positivos desde 1 hasta el número indicado. Por ejemplo, el factorial del número 3 es 3 * 2 * 1 = 6.

Veamos otro ejemplo sencillo de recursividad que imprime los números pares desde un valor inicial hasta 30:

function printEvens($num) {
    if ($num > 30) {
        return;
    }

    if ($num % 2 == 0) {
        echo "$num \n";
    }

    printEvens($num + 1);
}

printEvens(20); // Imprime 20, 22, 24, 26, 28, 30

Pero te había dicho que las funciones deben hacer una sola cosa, y este ejemplo hace dos cosas: imprimir y calcular. Así que no es un buen ejemplo de función. Pero te lo quería mostrar de manera sencilla.

Veamos cómo se haría correctamente:

function isEven($num): bool {
    return $num % 2 == 0;
}

function getEvens(int $num, int $limit = 30): array {
    if ($num > $limit) {
        return [];
    }

    if (isEven($num)) {
        return array_merge([$num], getEvens($num + 1, $limit));
    }
    
    return getEvens($num + 1, $limit);
}

$evens = getEvens(20);

foreach ($evens as $even) {
    echo "$even \n";
}

// Imprime 20, 22, 24, 26, 28, 30
  • isEven solo verifica si un número es par.
  • getEvens obtiene todos los números pares desde un número inicial hasta un límite (30 por defecto).

Incluso se puede simplificar la función getEvens usando el operador ternario:

function getEvens(int $num, int $limit = 30): array {
    if ($num > $limit) {
        return [];
    }

    return isEven($num) 
        ? array_merge([$num], getEvens($num + 1, $limit)) 
        : getEvens($num + 1, $limit);
}

Tips de Laravel y PHP

Te enviaré únicamente temas profesionales de programación cada domingo.

    Puedes cancelar en cualquier momento.