Inicio > PHP > 7- Funciones en PHP

7- Funciones en PHP

7- Funciones

En esta sección veremos un tipo especial de variables denominadas funciones, estas le facilitaran enormemente el trabajo de programación…

7.1- ¿Qué son las funciones?

Las funciones son un bloque de código que se ejecuta llamando a un nombre. Las funciones recursivas (se verán que son este y otro tipo de funciones un poquitín mas adelante) son muy útiles, pues se puede usar el dinamísmo. Su código:

Código:
php
function nombre ([arg_1, [arg_2 [, ... [, arg_n]]]]) {
//Códigos a ejecutar
}
?>

Pero… Ten cuidado con los nombres de las funciones, porque si declaras una función dos veces, o declaras una función con nombre de una ya existente, te dará el siguiente error:

Citar
Fatal error: Cannot redeclare XXX() in XXXXX on line XX

Hay dos tipos de funciones: las tradicionales y las recursivas. Las tradicionales son aquellas que no reciben parámetros (algo así como void en C). Mientras que las recursivas son aquellas que reciben parámentros y devuelven un valor asociado con esos parámetros. Aquí pongo un ejemplo para cada uno:

Función tradicional.

Código:
php
function sumar () {
echo 2 + 2;
}
sumar(); //Eso llama a la función sumar... Imprimiría 4
?>

Función recursiva.

Código:
php
function sumar ($a,$b) {
return $a + $b;
}
echo sumar (1,3); //Eso llama a la función sumar. Imprimiría 4
?>

Si se fijan, la primera función (la tradicional) imprime un valor sin la necesidad de ponerle un echo ala función. Esto es porque se ha puesto un echo dentro de la función. En cambio, a la otra función (la recursiva) se ha necesitado poner un echo a la función debido a que la función en si devuelve un valor, no lo imprime. ¿Se nota la diferencia? Eso sí, igualmente se podría poner un echo dentro de una función recursiva, pero la mejor forma sería con el return. Para ver como se devuelve un valor, veremos la función return.

El manejo de algunos tipos de variables especiales se convierten en algo práctico mas cuando se necesita manejar recursividad…Bienvenid@

7.3- La función Return

Como han visto, las funciones recursivas necesitan de la función return para devolver un valor. Pero… ¿Cómo funciona la función return? La función return solo devuelve valores, porlo que puedes usar dentro de ella cualquier cosa (ya sea función, operadores aritméticos, etc…). Un ejemplo sería el de la función recursiva que puse arriba. Creo que no hay nada mas que explicar, ¿no?

7.4- Parámetros por default

Hay una forma de que si los parámetros no son especificados al llamar una variable, sean puestos unos especificados anteriormente por el creador de la función. La forma de hacer eso es la siguiente:

Código:
php
function saludar ($nombre="Anónimo") {
return "Hola, ".$nombre;
}
echo saludar(); //Eso devolverá "Hola Anónimo"
echo saludar("Guillermo"); //Eso devolverá "Hola Guillermo"
?>

Es muy fácil. Si no se ponen parámetros y ya están especificados anteriormente, se usan los ya especificados. Si se ponen parámetros, se usan los puestos por el usuario.

7.5- Pasando argumenso a través de funciones

Las funciones, de por sí, no modifican las variables que se usan dentro de ellas. Osea:

Código:
php
function doble ($num) {
return $num = $num * 2;
}
$numero = 3;
echo doble ($numero); //Imprimirá 6, pero...
echo $numero; //Esto imprimirá 3. La función no afectó a la variable
?>

Pero si ponemos el símbolo ampersand ( & ) en la parte de los parámetros, la variable será modificada también. Osea:

Código:
php
function doble (&$num) {
return $num = $num * 2;
}
$numero = 3;
echo doble ($numero); //Devolverá 6
echo $numero;
//Devolverá 6 también, porque la función doble() modificó $numero
?>

¿Te fijas en el & al lado de la variable $num en doble()? Eso es lo que hace que la variable también se modifique. Ahora, si quieres que solo una vez la variable se modifique, y no todas, puedes sacar el & y ponerlo cuando se llama a la función. Osea:

Código:
php
function doble ($num) {
return $num = $num * 2;
}
$numero = 3;
echo doble (&$numero); //Devolverá 6
echo $numero;
//Devolverá 6 también, porque la función doble() modificó $numero
?>

Eso hará lo mismo que la función anterior, solo que cambiará solo la variable $numero. En caso que se llame la función a otra variable, sin poner el &, la variable no cambiará.

7.6- Problema con variables no globales

Como les dije en el capítulo 3.2.2, si una variable no es declarada global, esta no funcionará dentro de una función. Se los muestro con un ejemplo:

Código:
php
$a = "Soy una variable!";
function mostrar_ayb() {
$b = "Yo también!";
echo $a." ".$b;
}
mostrar_ayb();
?>

Este ejemplo producirá la siguiente salida:

Citar
Yo también!

Esto debido que $a fue declarada fuera de la función. Ahora, si queremos usar una variable externa a la función dentro de esta (caso del anterior ejemplo), simplemente hacemos lo siguiente:

Código:
php
$a = "Soy una variable!";
function mostrar_ayb() {
global $a;
$b = "Yo también!";
echo $a." ".$b;
?>

Este ejemplo si producirá la salida que queremos:

Citar
Soy una variable! Yo también!

También pueden ser declaradas/vistas las variables globales usando el Array superglobal $GLOBALS. Algo así:

Código:
php
$a = "Soy una variable!";
function mostrar_ayb() {
$GLOBALS["a"] = $a;
$b = "Yo también!";
echo $GLOBALS["a"]." ".$b;
?>
Categorías:PHP
  1. Aún no hay comentarios.
  1. No trackbacks yet.

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: