Parámetros de las funciones
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:
Ejemplo 12_4_ Pasando matrices a funciones <?php
function takes_array($input)
{
echo "$input[0] + $input[1] = ", $input[0]+$input[1];
}
?> |
|
Pasar parámetros por referencia
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:
Ejemplo 12_5_ 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_'
?> |
|
Parámetros por defecto
Una función puede definir valores por defecto para los
parámetros escalares estilo C++:
Ejemplo 12_6_ 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:
Ejemplo 12_7_ 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:
Ejemplo 12_8_ 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_ |
Lista de longitud variable de parámetros
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_