Funciones en PHP, este resumen debería haberlo hecho un par de post antes, pero se me paso, así que mas vale tarde que nunca! Espero que lo sigan disfrutando y que les interese este tipo de post! Mientras alguien lo lea ya estoy feliz.
Funciones definidas por el usuario
Simplemente son las funciones que nosotros vamos a ir definiendo, cualquier código PHP valido puede ser incluido dentro de la función, hasta podemos incluir otra funciones y definiciones de clases (el tema clases lo veremos mas adelante)
function foo($arg_1, $arg_2, /* ..., */ $arg_n='')
{
echo "Función de ejemplo.\n";
return $valordevuelto;
}
Las reglas para nombres de funciones son las mismas que utilizamos en las etiquetas. Comienza con una letra o guión bajo, seguido por letra, numero o guiones bajos, sin importar la cantidad. Se puede validar con la siguiente expresión regular [a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*
A diferencia de otros lenguajes, en PHP no se necesita definir la función antes de que se haga referencia, excepto que dicha función esta condicionada, acá un ejemplo.
$haceralgo = true;
/* No podemos llamar a foo() desde aquí
ya que no existe aún,
pero podemos llamar a bar() */
bar();
if ($haceralgo) {
function foo()
{
echo "No existo hasta que la ejecución del programa llegue hasta mí.\n";
}
}
/* Ahora podemos llamar de forma segura a foo()
ya que $haceralgo se evaluó como verdadero */
if ($haceralgo) foo();
function bar()
{
echo "Existo desde el momento inmediato que comenzó el programa.\n";
}
No existe sobrecarga de funciones, tampoco se puede “desdefinir” ni predefinir una función previamente declarada.
También se puede llamar a funciones recursivas, acá un ejemplo:
function recursividad($a)
{
if ($a < 20) {
echo "$a\n";
recursividad($a + 1);
}
}
Mas información -> Link
Argumentos de funciones
Se le pueden pasar argumentos a las funciones, estos son pasados por una lista separados por coma, se les pueden enviar por valor (por defecto), por referencia y valores predeterminados.
Ejemplo enviado por valor: Al pasar los argumentos por valor, si dicho argumento cambia de valor dentro de la función, no sera cambiado fuera de la función.
function tomar_matriz($entrada)
{
echo "$entrada[0] + $entrada[1] = ", $entrada[0]+$entrada[1];
}
Ejemplo enviado por referencia: Al pasar un argumento por referencia, si dicho argumento cambia de valor dentro de la función, al salir de la misma la variable contendrá el nuevo valor obtenido dentro de la función.
function añadir_algo(&$cadena)
{
$cadena .= 'y algo más.';
}
$cad = 'Esto es una cadena, ';
añadir_algo($cad);
echo $cad; // imprime 'Esto es una cadena, y algo más.'
Ejemplo valores predeterminados: Los argumentos predeterminados, serán usados si es que dicho argumento no es pasado a la función.
function hacercafé($tipo = "capuchino")
{
return "Hacer una taza de $tipo.\n";
}
echo hacercafé();
echo hacercafé(null);
echo hacercafé("espresso");
Los valores predeterminados, NO puede ser una variable, un miembro de una clase, o una llamada a una función. Ademas, los argumentos con valores predeterminados deberán estar a la derecha de TODOS los argumentos con valores no predeterminados.
Mas información -> Link
Retorno de Valores
Las funciones pueden devolver valores, para lograr esto debemos usar la sentencia return, esto causa la interrupción inmediatamente de dicha la función
Ejemplo:
function cuadrado($núm)
{
return $núm * $núm;
}
echo cuadrado(4); // imprime '16'.
Mas información -> Link
Funciones Variables
PHP soporta las funciones variables. Si una variable tiene paréntesis anexos a él, PHP buscará una función con el mismo nombre e intentará ejecutarla. Las funciones variables se puede usar para implementar llamadas de retorno, tablas de funciones, etc.
function foo() {
echo "En foo()
\n";
}
function bar($arg = '')
{
echo "En bar(); el argumento era '$arg'.
\n";
}
// Esta es una función de envoltura alrededor de echo
function hacerecho($cadena)
{
echo $cadena;
}
$func = 'foo';
$func(); // Esto llama a foo()
$func = 'bar';
$func('prueba'); // Esto llama a bar()
$func = 'hacerecho';
$func('prueba'); // Esto llama a hacerecho()
Mas información -> Link
Funciones Internas -> Link
Funciones Anónimas
Estas funciones, también conocidas como closures, nos permiten crear funciones que no poseen un nombre especificado. Dichas funciones son útiles como valores de los parámetros de llamadas de retorno, entre otras cosas.
Ejemplo:
echo preg_replace_callback('~-([a-z])~', function ($coincidencia) {
return strtoupper($coincidencia[1]);
}, 'hola-mundo');
// imprime holaMundo
Dichas funciones tambien se pueden utilizar como valores de una variable, PHP convierte dichas expresiones en instancias de la clase interna.
Ejemplo:
$saludo = function($nombre)
{
printf("Hola %s\r\n", $nombre);
};
$saludo('Mundo');
$saludo('PHP');
Las funciones anónimas, también pueden heredar variables de una clase padre.
Las funciones anónimas están disponibles a partir de PHP 5.3.0
Ejemplo:
class Carro
{
const PRECIO_MANTEQUILLA = 1.00;
const PRECIO_LECHE = 3.00;
const PRECIO_HUEVOS = 6.95;
protected $productos = array();
public function añadir($producto, $cantidad)
{
$this->productos[$producto] = $cantidad;
}
public function obtenerCantidad($producto)
{
return isset($this->productos[$producto]) ? $this->productos[$producto] :
FALSE;
}
public function obtenerTotal($impuesto)
{
$total = 0.00;
$llamadaDeRetorno =
function ($cantidad, $producto) use ($impuesto, &$total)
{
$precioUnidad = constant(__CLASS__ . "::PRECIO_" .
strtoupper($producto));
$total += ($precioUnidad * $cantidad) * ($impuesto + 1.0);
};
array_walk($this->productos, $llamadaDeRetorno);
return round($total, 2);
}
}
$mi_carro = new Carro;
// Añadir algunos artículos al carro
$mi_carro->añadir('mantequilla', 1);
$mi_carro->añadir('leche', 3);
$mi_carro->añadir('huevos', 6);
// Imprimir el total con un impuesto de venta del 5%.
print $mi_carro->obtenerTotal(0.05) . "\n";
// El resultado es 54.29
?>
Mas información -> Link
Espero que les sea útil este pos explicando todo sobre las funciones en PHP.
Saludos! Y espero sus comentarios!

