Funciones definidas por el usuario
Una función puede ser definida empleando una sintaxis como la siguiente:
Ejemplo #1 Seudocódigo para demostrar el uso de funciones
<?php
function foo($arg_1, $arg_2, /* ..., */ $arg_n)
{
echo "Función de ejemplo.\n";
return $valor_devuelto;
}
?>
Cualquier código PHP válido puede aparecer dentro de una función, incluso otras
funciones y definiciones de
clases.
Los nombres de las funciones siguen las mismas reglas que las demás etiquetas de PHP. Un
nombre de función válido comienza con una letra o guión bajo, seguido de
cualquier número de letras, números o guiones bajos. Como expresión regular
se expresaría así:
^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$
.
No es necesario definir una función antes de que sea referenciada,
excepto cuando esta esté condicionalmente definida como
se muestra en los dos ejemplos de abajo.
Cuando una función está definida de una forma condicional como en los dos
ejemplos siguientes, sus definiciones deben ser procesadas antes
de ser llamadas.
Ejemplo #2 Funciones condicionales
<?php
$hacer_algo = true;
/* No podemos llamar a foo() desde aquí
ya que no existe aún,
pero podemos llamar a bar() */
bar();
if ($hacer_algo) {
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 $hacer_algo se evaluó como verdadero */
if ($hacer_algo) foo();
function bar()
{
echo "Existo desde el momento inmediato que comenzó el programa.\n";
}
?>
Ejemplo #3 Funciones dentro de funciones
<?php
function foo()
{
function bar()
{
echo "No existo hasta que se llame a foo().\n";
}
}
/* No podemos llamar aún a bar()
ya que no existe. */
foo();
/* Ahora podemos llamar a bar(),
el procesamiento de foo()
la ha hecho accesible. */
bar();
?>
Todas las funciones y clases de PHP tienen ámbito global. Se pueden
llamar desde fuera de una función incluso si fueron definidas dentro, y viceversa.
PHP no admite la sobrecarga de funciones, ni es posible
'desdefinir' ni redefinir funciones previamente declaradas.
Nota:
Los nombres de las fuciones son insensibles a mayúsculas-minúsculas, aunque es una buena
idea llamar a las funciones tal y como aparecen en sus declaraciones.
Las funciones admiten un número variable de
argumentos y argumentos
predeterminados. Véanse también las referencias
de funciones para
func_num_args(),
func_get_arg(), y
func_get_args() para más información.
En PHP es posible llamar a funciones recursivas.
Ejemplo #4 Funciones recursivas
<?php
function recursividad($a)
{
if ($a < 20) {
echo "$a\n";
recursividad($a + 1);
}
}
?>
Nota:
Las llamadas a funciones/métodos recursivos con más de 100-200 niveles de recursividad pueden
agotar la pila y ocasionar la finalización del script en curso. Especialmente,
las recurisvidades infinitas están consideradas un error de programación.