La información puede suministrarse a las funciones mediante la lista de parámetros, una lista de variables y/o constantes separadas por comas.
PHP soporta pasar parámetros por valor (el comportamiento por defecto), por referencia, y parámetros por defecto. Listas de longitud variable de parámetros sólo están soportadas en PHP4 y posteriores; ver Listas de longitud variable de parámetros y la referencia de las funciones func_num_args(), func_get_arg(), y func_get_args() para más información. Un efecto similar puede conseguirse en PHP3 pasando un array de parámetros a la función:
Example#1 Pasando matrices a funciones
<?php
function takes_array($input)
{
echo "$input[0] + $input[1] = ", $input[0]+$input[1];
}
?>
Por defecto, los parámetros de una función se pasan por valor (de manera que si cambias el valor del argumento dentro de la función, no se ve modificado fuera de ella). Si deseas permitir a una función modificar sus parámetros, debes pasarlos por referencia.
Si quieres que un parámetro de una función siempre se pase por referencia, puedes anteponer un ampersand (&) al nombre del parámetro en la definición de la función:
Example#2 Pasando parámetros de funciones por referencia
<?php
function add_some_extra(&$string)
{
$string .= ' y algo más.';
}
$str = 'Esto es una cadena, ';
add_some_extra($str);
echo $str; // Saca 'Esto es una cadena, y algo más.'
?>
Una función puede definir valores por defecto para los parámetros escalares estilo C++:
Example#3 Uso de parámetros por defecto en funciones
<?php
function makecoffee ($type = "cappucino")
{
return "Hacer una taza de $type.\n";
}
echo makecoffee ();
echo makecoffee ("espresso");
?>
La salida del fragmento anterior es:
Hacer una taza de cappucino. Hacer una taza de espresso.
El valor por defecto tiene que ser una expresión constante, y no una variable, miembro de una clase ó llamada a una función.
Destacar que cuando se usan parámetros por defecto, estos tienen que estar a la derecha de cualquier parámetro sin valor por defecto; de otra manera las cosas no funcionarán de la forma esperada. Considera el siguiente fragmento de código:
Example#4 Uso incorrecto de parámetros por defecto en funciones
<?php
function makeyogurt ($type = "acidophilus", $flavour)
{
return "Haciendo un bol de $type $flavour.\n";
}
echo makeyogurt ("mora"); // No funcionará de la manera
esperada
?>
La salida del ejemplo anterior es:
Warning: Missing argument 2 in call to makeyogurt() in /usr/local/etc/httpd/htdocs/php3test/functest.html on line 41 Haciendo un bol de mora.
Y ahora, compáralo con:
Example#5 Uso correcto de parámetros por defecto en funciones
<?php
function makeyogurt ($flavour, $type = "acidophilus")
{
return "Haciendo un bol de $type $flavour.\n";
}
echo makeyogurt ("mora"); // funciona como se esperaba
?>
La salida de este ejemplo es:
Haciendo un bol de acidophilus mora.
PHP4 soporta las listas de longitud variable de parámetros en las funciones definidas por el usuario. Es realmente fácil, usando las funciones func_num_args(), func_get_arg(), y func_get_args().
No necesita de ninguna sintaxis especial, y las listas de parámetros pueden ser escritas en la llamada a la función y se comportarán de la manera esperada.