Una función se define utilizando el operador function
,
un nombre, una lista de argumentos (que pueden estar vacíos) separados por comas
(,
) entre paréntesis, seguidos del cuerpo de
la función entre llaves, como sigue:
Ejemplo #1 Declaración de una nueva función llamada foo
<?php
function foo($arg_1, $arg_2, /* ..., */ $arg_n)
{
echo "Ejemplo de función.\n";
return $retval;
}
?>
Nota:
A partir de PHP 8.0.0, la lista de argumentos puede tener una coma final:
<?php
function foo($arg_1, $arg_2,) { }
?>
Todo código PHP válido puede aparecer dentro del cuerpo de una función, incluso otras funciones y definiciones de clase.
Los nombres de funciones siguen las mismas reglas que otros identificadores en PHP.
Un nombre de función válido comienza con una letra o un subrayado, seguido
por cualquier número de letras, números o subrayados.
Estas reglas pueden representarse mediante la expresión regular siguiente:
^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$
Vea también Guía de entorno de usuario para nombres.
Las funciones no necesitan ser definidas antes de ser utilizadas, SALVO cuando una función es definida condicionalmente, como se muestra en los dos ejemplos siguientes.
Cuando una función es definida de manera condicional, como en los ejemplos siguientes, su definición debe preceder su utilización.
Ejemplo #2 Funciones condicionales
<?php
$makefoo = true;
/* No es posible llamar a foo() aquí,
ya que esta función no existe.
Pero podemos utilizar bar() */
bar();
if ($makefoo) {
function foo()
{
echo "No existo hasta que el programa pase por aquí.\n";
}
}
/* Ahora podemos llamar a foo()
ya que $makefoo se evalúa como verdadero */
if ($makefoo) foo();
function bar()
{
echo "Existo desde el principio del programa.\n";
}
?>
Ejemplo #3 Funciones dentro de otra función
<?php
function foo()
{
function bar()
{
echo "No existo hasta que foo() sea llamado.\n";
}
}
/* No es posible llamar a bar() aquí
ya que no existe. */
foo();
/* Ahora podemos llamar a bar(),
ya que la utilización de foo() la ha hecho
accesible. */
bar();
?>
Todas las funciones y clases en PHP tienen un ámbito global - pueden ser llamadas fuera de una función si han sido definidas dentro y viceversa.
PHP no soporta la sobrecarga, la destrucción y la redefinición de funciones ya declaradas.
Nota: Los nombres de funciones son insensibles a mayúsculas/minúsculas para los caracteres ASCII
A
aZ
, y es generalmente aceptado que las funciones deben ser llamadas con el nombre utilizado en su declaración, incluyendo la mayúscula/minúscula.
Las listas de argumentos de función variables y los valores por defecto de argumentos son soportados: ver las funciones de referencia que son func_num_args(), func_get_arg(), y func_get_args() para más información.
Es posible llamar a funciones recursivas en PHP.
Ejemplo #4 Funciones recursivas
<?php
function recursion($a)
{
if ($a < 20) {
echo "$a\n";
recursion($a + 1);
}
}
?>
Nota: Las llamadas de métodos/funciones recursivas con 100-200 niveles de recursividad pueden llenar la pila y así, terminar el script actual. Se debe notar que una recursión infinita es considerada un error de programación.