Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Una función puede ser definida usando una sintaxis como la siguiente:
<?php
function foo($arg_1, $arg_2, /* ..., */ $arg_n)
{
echo "Función de ejemplo.\n";
return $valordevuelto;
}
?>
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 otras 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_\x7f-\xff][a-zA-Z0-
9_\x7f-\xff]*.
Las funciones no necesitan ser definidas antes de que se referencien, excepto cuando una función
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
mostrados, sus definiciones deben ser procesadas antes de ser llamadas.
Ejemplo #2 Funciones condicionales
<?php
$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";
}
?>
Todas las funciones y las clases de PHP tienen ámbito global - pueden ser llamadas fuera de una
función incluso si fueron definidas dentro, y viceversa.
Los nombres de las fuciones son insensibles a mayúsculas-minúsculas, por lo que es una buena
idea llamar a las funciones tal y como aparecen en sus declaraciones.
El número variable de argumentos y los argumentos predeterminados están soportados por las
funciones.
En PHP es posible llamar a funciones recursivas. Sin embargo, evite las llamadas a
funciones/métodos recursivos con más de 100-200 niveles de recursividad ya que pueden agotar
la pila y causar la terminación del script actual.
<?php
function recursividad($a)
{
if ($a < 20) {
echo "$a\n";
recursividad($a + 1);
}
}
?>