Necesitas un desarrollador para tu proyecto? Envíame un mensaje

Curso programación en PHP: Funciones

En programación las funciones son grupos de lineas de código pensados para resolver una tarea específica que por lo general se encuentra en forma frecuente a lo largo de la aplicación.

Las funciones pueden recibir parámetros y retornar un valor.
También es importante remarcar que existen funciones propias del lenguaje y funciones definidas por el programador.

Funciones definidas por el lenguaje

Tomemos por ejemplo la función rand() que es propia de PHP lo cual implica que no se debe definir y que se puede invocar en forma directa.
El propósito de rand() es retornar un número aleatorio, veamos la definición:

int rand ( int $min , int $max )

Vemos que es una función de tipo int, esto significa que el valor retornado es un entero.
También podemos apreciar que toma 2 parámetros, el primero define el valor mínimo retornado y el segundo el máximo.
Entonces si hacemos...

echo rand(2,8);

...obtendremos un valor aleatorio de entre 2 y 8.
En este caso imprimimos directamente en pantalla el valor retornado, aunque también podríamos haberlo almacenado en una variable:

$random_int = rand(2,8);

Si no se le pasan parámetros rand() retorna un valor de entre 0 y el máximo posible según la plataforma.

Hasta aquí hemos visto un ejemplo de una función propia del lenguaje, PHP tiene cientos de ellas que realizan todo tipo de tareas, puedes leer más al respecto en el manual http://php.net

Funciones definidas por el usuario

Ahora vamos a ver el otro tipo de funciones, las que define el mismo programador.

En el ejemplo con el que acabamos de trabajar no necesitamos especificar lo que debía hacer la función por estar definida por el lenguaje, ahora por el contrario vamos a crear nuestra propia función por lo que deberemos programar todas las acciones que deseamos que realice, esto se conoce como definir la función.

Podemos elegir cualquier nombre para nuestra función, siempre respetando las reglas que vimos antes para las variables las cuales también aplican aquí:

  • Sensible a mayúsculas y minúsculas
  • Letras, números y espacios
  • El primer caracter no puede ser un número

Tampoco podemos elegir un nombre que ya esté siendo utilizado por PHP, en ese caso recibiremos un error.

Como ejemplo vamos a crear una función llamada calculate_price() cuyo propósito será calcular el precio final de un producto.
A la misma le pasaremos 2 parámetros, el primero será el precio de lista, y el segundo un valor booleano, que determinará si se debe aplicar el impuesto completo (TRUE) o reducido (FALSE).
Aquí en Argentina tenemos impuesto del 21% para la mayoría de las cosas y 10.5% para algunas otras, vamos a utilizarlo como referencia.

function calculate_price($price, $full_tax) {
    if($full_tax) {
        $net_price = $price * 1.21;
    }else{
        $net_price = $price * 1.105;
    }
    return $net_price;
}

Nota: Seguramente ya habrás notado que siempre utilizo nombres en inglés para las entidades, esto no es obligatorio pero si recomendable por ser el lenguaje universal en sistemas (nunca sabes quien puede necesitar evaluar tu código!). En caso de usar nombres en español al menos asegurate de ser consistente, es terrible ver código donde se nombra en un lenguaje determinado y a la linea siguiente en otro distinto, o peor aún algún tipo de spanglish como "get_controlador()" o cosas por el estilo.

Entonces, comenzamos la declaración de la función con la palabra reservada function, seguido del nombre de la misma, los parámetros entre paréntesis y separados por comas, y finalmente el cuerpo, que es donde van las instrucciones a realizar.
Si el parámetro $full_tax es TRUE le sumamos 21% al otro parámetro ($price) que es el precio libre de impuestos, en caso contrario le agregamos 10.5%.
Finalmente retornamos el precio neto utilizando la instrucción return.

Esto es la definición de la función, ahora vamos a ver la implementación.

$net_price = calculate_price(100, TRUE);
echo $net_price; // 121

$net_price = calculate_price(100, FALSE);
echo $net_price; // 110.5

El código donde se define la función siempre debe ser incluído antes de intentar implementarla, en caso contrario provocará un error de tipo fatal al momento de la ejecución.