¿Qué son las funciones en PHP?

Resumen.

En PHP usamos funciones continuamente, muchas de ellas son propias, nativas, de PHP, pero cuando PHP no tiene una función para lo que queremos hacer, podemos crear nosotros nuestra propia función. En este capitulo veremos como se usan las funciones nativas y como crear nuestras propias funciones en PHP.

Artículo.

Este capitulo es, a mi modo de ver, de los mas interesantes, no solo vamos a conocer alguna función de PHP y su lógica de uso, sino que además, veremos como podemos crear nuestras propias funciones, cuando para lo que necesitamos hacer, PHP no tiene una función en cuanto tal.

Se puede decir que existen dos tipos de funciones, aquellas propias de PHP, a las que nos referiremos como funciones nativas, y aquellas que un programador crea para hacer algo y que los desarrolladores de PHP no han considerado. Otra diferenciación entre los tipos de funciones es la relativa a los parámetros que reciben, algunas no reciben parámetros, otras reciben un parámetro mientras otras reciben varios parámetros. Vamos a ello.

Empezaremos con las funciones nativas sin parámetros, probablemente la mas usada sea la función time(), esta función nos da el número de segundos transcurridos desde la 1 horas del 1 de enero de 1970. Guardar el valor de una función como esta es muy sencillo, tanto como esto:


<?php
// Aplicamos una función sin parametros
$segundos = time();
echo $segundos;
?>


Entre las funciones mas usadas de un parámetro tenemos la función que nos cuenta el número de caracteres contenidos en una variable, esta función es strlen(). Su lógica de uso es también muy sencilla, es la siguiente:


<?php
// Aplicamos una función de un parametro
$mi_web = 'artesaniaweb.es';
$n_caracteres = strlen($mi_web);
echo "En $mi_web hay $n_caracteres caracteres";
?>


Como ejemplo de función de mas de un parámetro podemos citar la función substr(), que se usa para eliminar caracteres de una cadena. Esta función puede recibir dos o tres parámetros, los parámetros que recibe la función se separan con comas (,), veamos dos casos:


<?php
// Aplicamos una función de mas de un parametro
$mi_web = 'artesaniaweb.es';
// Eliminamos 9 caracteres por la izquierda
$elimina1 = substr($mi_web, 9);
// Eliminamos 1 caracter por la izquierda y 3 por la derecha
$elimina2 = substr($mi_web, 1, -3);

echo "$elimina1 <br /> $elimina2";
?>


PHP tiene cientos de funciones, o más bien miles de funciones, pero aún así, puede ocurrir que no tenga PHP una función para lo que queremos hacer. Así que ahora vamos a ver como crear nuestra primera función, veamos como.

Imaginemos que queremos crear una función para calcular la superficie de un triangulo. Ya se, es algo muy elemental, pero así se entenderá mejor la lógica del uso de las funciones.

El código obvio que cualquiera escribiría para tal caso seria el siguiente:


<?php
// Superficie de un triangulo.
$base = 4;
$altura = 5;
// Aplicamos la formula
$superficie = ($base * $altura) / 2;

echo "La superficie del triangulo es $superficie";
?>


Vamos a ver como convertimos este código en una función. Toda función se define de la siguiente forma:


function Mi_Funcion(parametro1,parametro2,…){
$variable_resultado = …;
return $variable_resultado;
}


Toda función se inicia con “function” seguido del nombre de la función, y entre paréntesis y separados por comas, los parámetros que recibe. Con esos parámetros tenemos que calcular $variable_resultado, y mediante “return”, haremos que la función nos de ese resultado. La función por tanto, quedaría de la siguiente manera:


<?php
// Función superficie de un triangulo.

function Sup_Triangulo($base,$altura){
$superficie = ($base * $altura) / 2;
return $superficie;
}
// Ejecutamos la funcion
$la_base = 4;
$la_altura = 5;

$area_triandulo = Sup_Triangulo($la_base,$la_altura);

echo "La superficie del triangulo es $area_triandulo";
?>


Como podemos ver, la función creada por nosotros se aplica de igual manera que cualquier otra función nativa de PHP, pero si bien con las funciones nativas solo nos encargamos de aplicarlas, y ahora las tenemos que crear, como lo hacemos, ¿que ventaja tenemos con una función que supere al escribir el código?

La lógica es sencilla, seria algo como esto:


<?php
include(Fun_sup_triangulo.php);

$area_triandulo = Sup_Triangulo(4, 5);

echo "La superficie del triangulo es $area_triandulo";
?>


¿Qué hemos hecho? Muy sencillo, hemos creado un archivo que contiene la función Fun_sup_triangulo.php, este archivo lo cargamos mediante la sentencia “include()”, y ya solo tenemos que aplicar la función a los valores que nos interesan. Como podemos ver, el código se ha simplificado, pero en este caso, no se aprecia cuanto porque el calculo de esta función es muy simple, pero podía ser mas complejo, seria el caso por ejemplo si tratásemos de calcular el volumen de una esfera.

Veamos como podemos crear esta función, pero no nos vamos a limitar a calcular el volumen, vamos a calcular también la longitud de una circunferencia, la superficie de un círculo, la superficie de la esfera y su volumen, y además, la función nos dará el resultado con el número de decimales que le indiquemos. Lógicamente para esto debemos conocer las formulas, si no las sabes, es fácil encontrarlas en Google.

Para ello vamos a necesitar tres funciones nativas: la función pi(), que nos da el valor 3,14… con precisión de 13 decimales; la función round(), que nos sirve para redondear el número de decimales; y la función pow(), que nos permite calcular potencias.

En el “return” de la función, dado que vamos a calcular varios valores, y “return” solo puede haber uno, debemos crear una variable array que contenga todos los valores, y recuperar los resultados agregando el índice del array correspondiente al valor que nos interesa calcular.


<?php
// Inicio archivo Fun_esfera.php
/* Función que calcula varios valores y los devuelve en un array */

function Esfera($radio,$decimal){
$circunferencia = round(2 * pi() * $radio, $decimal);
$circulo = round(pi() * pow($radio, 2), $decimal);
$superficie = round(4 * pi() * pow($radio, 2), $decimal);
$volumen = round((4 * pi() * pow($radio, 3)) / 3, $decimal);
$datos_esfera = array($circunferencia,$circulo,$superficie,$volumen);
return $datos_esfera;
}
// Fin archivo Fun_esfera.php

// Aplicamos la funcion
$radio = 7.5;
$decimales = 3;
$calculo_esfera = Esfera($radio,$decimales);

echo '<pre>';
print_r($calculo_esfera);
echo '</pre>';

echo "La longitud de la circunferencia es $calculo_esfera[0] <br />
La superficie del circulo es $calculo_esfera[1] <br />
La superficie de la esfera es $calculo_esfera[2] <br />
El volumen de la esfera es $calculo_esfera[3]";
?>


Ahora que hemos creado un código más complejo, con varios cálculos y varias funciones, vemos como crear nuestras propias funciones pueden hacernos la vida mucho más fácil.


<?php
include(Fun_esfera.php);

$volumen_esfera = Esfera(3,4);

echo "El volumen de la esfera es $volumen_esfera[3]";
?>


El uso de funciones no solo hace mas sencillo aplicar códigos complejos, nos permite también usarlos en una misma página tantas veces como deseemos, sin problemas de interferencias de nombre de variables.

El problema de la interferencia de nombres de variables es el siguiente. Si tenemos que calcular dos o mas veces en una misma página la superficie de una esfera, por ejemplo, tendríamos que modificar en todo el código la variable $radio, en un código se llamaría, por ejemplo, $radio, en otro $radio1, $radio2… Las funciones nos evitan este fastidioso problema y nos ahorran reescribir muchas líneas de código.

Las funciones tienen también otra ventaja, y es que, aunque carguemos una función, si no la aplicamos, esta no nos consume recursos de servidor dado que no se ejecuta, lo que si ocurre cuando se escribe código de manera convencional.

Y con esto, esperando haber descubierto la lógica de las funciones, finalizamos este interesante capítulo.
Tags: Función || nativa || function || return || parámetro

Comentarios.

Sin comentarios, publica el tuyo.