Guía Práctica Para Funciones Personalizadas con PHP

Entendamos por función a un bloque de código preparada para realizar una tarea específica, se usa de manera especial para tareas que necesitaremos realizar con alguna frecuencia, aunque esa no es su única ventaja.

Todos los lenguajes de desarrollo ya tienen una serie de funciones predefinidas para trabajar con datos, conexiones, objetos, etc. Sin embargo, es obvio que se trata de tareas algo comunes y limitadas, por lo que tarde o temprano se necesitará definir funciones personalizadas para alguna necesidad particular del usuario.

Veamos como podemos entonces crear funciones personalizadas en PHP.

Declaración de la función

La estructura típica de una función es la siguiente:

function nombre_funcion($argumento1, $argumento2,…){
instrucciones;
refurn valor_devolver;
}

La instrucción ‘function’ describe que vamos a declarar una función y esta incluye:

  1. nombre_funcion: Es el nombre con el que identificaremos a la función el mismo que es exclusivo. Inicia por una letra o guión bajo seguido de caracteres, números y guiones bajos.
  2. $argumento1, $argumento2: Son los parámetros, datos necesarios para que la función, pueda realizar las instrucciones que contiene. Podría haber funciones con uno o más argumentos, o si no tiene argumentos solo dejamos los paréntesis vacíos.
  3. instrucciones: Son las instrucciones que debe realizar la función, incluso una función podría contener a otra función.
  4. valor_devolver: Es el resultado de la función, la expresión ‘return’ indica que ese resultado será devuelto al punto en donde se llamó la función. Este paso es opcional, podríamos diseñar funciones que no devuelvan resultados.

Ejecutar una función

Para ejecutar una función se le debe llamar por su nombre, para el ejemplo que hemos colocado en el punto anterior la llamada podría ser de esta forma:

nombre_funcion(un_dato, otro:dato);

Solo debe existir una función con el nombre ‘nombre_funcion’, y los datos ‘un_dato’ y ‘otro_dato’ serían los valores asignados a los argumentos de la función, la que ejecutará el bloque de ‘instrucciones’.

En el caso que la función deba devolver un resultado con ‘return’ se debe determinar que se va a hacer con ese resultado, por ejemplo, si es una cadena que deseamos mostrar:

echo nombre_funcion(un_dato, otro:dato);

Y si deseamos almacenar en una variable:

$resultado = nombre_funcion(un_dato, otro:dato);

Función ‘¡Hola Mundo!’

Vayamos al primer ejemplo práctico:

function hola(){
echo “¡Hola Mundo!”;
}

En este caso lo que hace la función es mostrar en la página la cadena “¡Hola Mundo!”, no lleva argumento alguno. Y si deseamos usar la instrucción ‘return’ sería:

function hola(){
return “¡Hola Mundo!”;
}

En este caso la función no escribe la cadena, la devuelve al lugar donde se hace la llamada, mientras en el primer ‘Hola Mundo’ la llamada para ejecutarla sería:

hola();

Para el segundo ejemplo será:

echo hola();

Funciones con argumentos

Si tenemos una función para sumar tres número es obvio que se necesitarán esos tres números, si es para saludar por su nombre al usuario que ingresa al sistema entonces necesitaremos su nombre, si es para conectarnos a una base de datos requerimos la dirección de la BD, nombre de usuario y contraseña.

Esos datos necesarios para la función son los argumentos, veamos un ejemplo:

function saludo($nombre, $edad){
$msj = “Hola ”.$nombre.”. Tienes “.$edad.” años de edad”;
return $msj;
}

La función ‘saludo()’ necesita que le enviemos el nombre y edad (en ese orden) para realizar su trabajo, notemos que está usando ‘return’ por lo que la llamada a la función será:

echo saludo(“Julio”, 25);

Y el resultado será mostrado en la página así:

Hola Juan. Tienes 25 años de edad

Dentro de la función podemos colocar otras estructuras (incluso otra función), por ejemplo, pensemos en una función que nos indique si el número recibido es par o impar, usemos el operador módulo para obtener el residuo de dividirlo entre 2, si el residuo es cero, entonces es par:

function par_impar($numero){
$msj = “”;
$residuo = $numero % 2;
if($residuo == 0){
$msj = ” es par”;
}else{
$msj = ” es impar”;
}
echo $numero.$msj;

}

Al final imprimimos directamente el mensaje sin usar ‘return’, la llamada será:

par_impar(123);

Si tenemos ese número almacenado en la variable $x, la llamada será:

par_impar($x);

El resultado impreso:

123 es impar

Argumentos con valores predeterminados

Pensemos en el ejercicio anterior ¿Que pasa si olvidamos pasarle el argumento?

par_impar();

Al no hallar ese valor para hacer su trabajo se producirá una excepción. Una solución práctica es darle a ese argumento un valor de antemano, que solo se usará en caso que no reciba otro dato, esto se hace en la declaración de la función, por ejemplo:

function par_impar($numero = 0){
$msj = “”;
$residuo = $numero % 2;
if($residuo == 0){
$msj = ” es par”;
}else{
$msj = ” es impar”;
}
echo $numero.$msj;

}

De esta forma, si en la llamada se pone valor alguno se evaluará ese valor, pero si olvidan (u omiten) colocar valor alguno se evaluará el valor numérico cero.

Nota: Si desean mostrar otro mensaje para el número cero, entonces una solución es extender la estructura ‘if’ para mostrar el mensaje deseado, digo esto ya que en ocasiones me han dicho que el cero no es par.

Pensemos en otra situación, varios argumentos y deseamos predeterminar un valor solamente a uno de ellos, conectarnos a un servidor (sobre conexión a MySQL) con el nombre del servidor, nombre de usuario y contraseña, predeterminaremos solo el servidor:

function conectar($servidor = “localhost”, $usuario, $clave){
//implementar conexión
}

Por defecto el servidor será “localhost” en el caso de que no se ingrese otro dato, pero es necesario ingresar el nombre de usuario y contraseña, imaginemos que deseamos conectarnos a localhost por lo que ya no necesitamos pasar este dato:

conectar($admin, $clave);

Esto nos dará un problema, ya que la función usará el valor de $admin como nombre del servidor, $clave como el nombre de usuario y no hallará la clave de acceso. La función asignará a los argumentos los valores que recibe en el mismo orden, la forma de corregir esto es cambiando el orden de los parámetros:

function conectar($usuario, $clave, $servidor = “localhost”){
//implementar conexión
}

Así podemos hacer la llamada omitiendo el último dato para conectarnos a localhost:

conectar($admin, $clave);

Con esto de seguro ya están listos para empezar a definir sus funciones personalizadas, aquí unos enlaces relacionados a los temas tratados en este post:

[Descargar de Google Drive]

2 responses to this post.

  1. Interesante… aunque ahora me surjen aun mas dudas…

    Responder

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

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: