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
<?phpfunction 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
<?phpfunction 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
<?phpfunction 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
<?phpfunction makeyogurt ($type "acidophilus"$flavour)
{
    return 
"Haciendo un bol de $type $flavour.\n";
}

echo 
makeyogurt ("mora");   // No funcionar&aacute; de la maneraesperada
?>


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
<?phpfunction 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.

No response to “Parámetros de las funciones”