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 17-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 17-5. Pasando parámetros de funciones por referencia

<?php
function add_some_extra(&$string)
{
    
$string .= ' y algo m&aacute;s.';
}
$str = 'Esto es una cadena, ';
add_some_extra($str);
echo
$str;    // Saca 'Esto es una cadena, y algo m&aacute;s.'
?>

Parámetros por defecto

Una función puede definir valores por defecto para los parámetros escalares estilo C++:

Ejemplo 17-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 17-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&aacute; 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 17-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.

Hosting by: hurra.com
Generated: 2007-01-26 18:01:08