Sie sind auf Seite 1von 3

Argumentos de funciones

La informacin puede ser pasada a las funciones mediante la lista de argumentos, la cual es una lista de expresiones delimitadas por comas. Los argumentos son evaluados de izquierda a derecha. PHP soporta argumentos pasados por valor (por defecto), pasados por referencia, y valores de argumentos predeterminados. Las Listas de argumentos de longitud variable tambin estn soportadas, vea tambin las referencias de funciones para func_num_args(), func_get_arg(), y func_get_args() para ms informacin. Ejemplo #1 Pasar arrays a funciones
<?php function tomar_array($entrada) { echo "$entrada[0] + $entrada[1] = ".$entrada[0]+$entrada[1]; } ?>

Hacer que los argumentos sean pasados por referencia


Por defecto, los argumentos de las funciones son pasados por valor (por lo que si el valor del argumento dentro de la funcin se cambia, no se cambia fuera de la funcin). Para permitir a una funcin modificar sus argumentos, stos deben pasarse por referencia. Para hacer que un argumento a una funcin sea siempre pasado por referencia hay que poner delante del nombre del argumento el signo 'ampersand' (&) en la definicin de la funcin: Ejemplo #2 Pasar parmetros de una funcin por referencia
<?php function aadir_algo(&$cadena) { $cadena .= 'y algo ms.'; } $cad = 'Esto es una cadena, '; aadir_algo($cad); echo $cad; ?> // imprime 'Esto es una cadena, y algo ms.'

Valores de argumentos predeterminados


Una funcin puede definir valores predeterminados al estilo C++ para argumentos escalares como sigue: Ejemplo #3 Uso de parmetros predeterminados en funciones

<?php function hacercaf($tipo = "capuchino") { return "Hacer una taza de $tipo.\n"; } echo hacercaf(); echo hacercaf(null); echo hacercaf("espresso"); ?>

El resultado del ejemplo sera: Hacer una taza de capuchino. Hacer una taza de . Hacer una taza de espresso. PHP tambin permite el uso de arrays y del tipo especial NULL como valores predeterminados, por ejemplo: Ejemplo #4 Usar tipos no escalares como valores predeterminados
<?php function hacercaf($tipos = array("capuchino"), $fabricanteCaf = NULL) { $aparato = is_null($fabricanteCaf) ? "las manos" : $fabricanteCaf; return "Hacer una taza de ".join(", ", $tipos)." con $aparato.\n"; } echo hacercaf(); echo hacercaf(array("capuchino", "lavazza"), "una tetera"); ?>

El valor predeterminado debe ser una expresin constante, no (por ejemplo) una variable, un miembro de una clase o una llamada a una funcin. Observe que cuando se usan argumentos predeterminados, cualquiera de ellos debera estar a la derecha de los argumentos no predeterminados; si no, las cosas no funcionarn como se esperaba. Considere el siguiente trozo de cdigo: Ejemplo #5 Uso incorrecto de argumentos predeterminados en una funcin
<?php function haceryogur($tipo = "acidfilo", $sabor) { return "Hacer un tazn de yogur $tipo de $sabor.\n"; } echo haceryogur("frambuesa"); ?> // no funcionar como se esperaba

El resultado del ejemplo sera:

Warning: Missing argument 2 in call to haceryogur() in /usr/local/etc/httpd/htdocs/phptest/functest.html on line 41 Hacer un tazn de yogur frambuesa de . Ahora compare el ejemplo de arriba con este: Ejemplo #6 Uso correcto de argumentos predeterminados en una funcin
<?php function haceryogur($sabor, $tipo = "acidfilo") { return "Hacer un tazn de yogur $tipo de $sabor.\n"; } echo haceryogur("frambuesa"); ?> // funciona como se esperaba

El resultado del ejemplo sera: Hacer un tazn de yogur acidfilo de frambuensa. Nota: A partir de PHP 5, los argumentos que son pasados por referencia pueden tener un valor predeterminado.

Listas de argumentos de longitud variable


PHP tiene soporte para listas de argumentos de longitud variable en funciones definidas por el usuario. Esto realmente es bastante fcil si se usan las funciones func_num_args(), func_get_arg(), y func_get_args(). No se necesita una sintaxis especial, y la lista de argumentos an puede ser proporcionada explcitamente con definiciones de funciones, y se comportar con normalidad.