PHP contiene una gran cantidad de funciones en librerías, pero antes o después necesitaremos crear nuestras propias funciones.
Los argumentos de una función
Por defecto los argumentos se pasan por valor. Esto significa que cualquier cambio que se le haga a estas variables dentro de la función, se ignorará fuera de ella.
<?php
<?php
<?php
<?php
<?php
<?php
<?php
Valores devueltos por una función
Se utiliza return para devolver un valor. También se puede utilizar return para parar la ejecución de una función, sin necesidad de devolver nada.
<?php
function nombre() { ... }No es necesario definir la función antes de invocarla porque PHP lee el script completo antes de ejecutarlo. De todas maneras, esta práctica no es muy habitual.
Los argumentos de una función
Por defecto los argumentos se pasan por valor. Esto significa que cualquier cambio que se le haga a estas variables dentro de la función, se ignorará fuera de ella.
<?php
function cambiaColor($cadena) { $cadena = 'Rojo'; } $cadena = 'Verde'; cambiaColor($cadena); // Para llamar a una función se especifica su nombre. echo $cadena; // $cadena es Verde ?>Para que estos cambios sí se reflejen, habría que pasarlos por referencia. Para ello hay que añadirle & al parámetro en cuestión.
<?php
function cambiaColor(&$cadena) { $cadena = 'Rojo'; } $cadena = 'Verde'; cambiaColor($cadena); echo $cadena; // $cadena es Rojo ?>A partir de PHP 5, se pueden asignar valores por defecto a los argumentos de una función, por si no se les proporciona ningún valor. Estos argumentos deben aparecer al final de la lista de argumentos y tener valores constantes.
<?php
function cambiaColor($cadena='Amarillo') { echo $cadena; } cambiaColor('Verde'); // Muestra Verde cambiaColor(); // Muestra Amarillo ?>Para definir argumentos opcionales, se les asigna un valor nulo de la siguiente manera:
<?php
function multiplica($num1,$num2="") { echo $num1*$num2; } multiplica(3,4); // 12 multiplica(2); // 0 ?>Para acceder a variables globales desde una función, podemos utilizar global
<?php
$color = 'Rojo'; function muestraColor() { global $color; echo $color; } muestraColor(); // Muestra Rojo ?>o el array $GLOBALS
<?php
$color = 'Rojo'; function muestraColor() { echo $GLOBALS['color']; } muestraColor(); // Muestra Rojo ?>También se pueden crear funciones con un número variable de argumentos. Para ello tenemos las funciones func_num_args(), func_get_arg() y func_get_args().
<?php
function muestraColores() { if (func_num_args() > 0) { $color = func_get_arg(0); // Cogemos el primer argumento echo $color; } else { echo 'Amarillo'; } } muestraColores(); // Amarillo muestraColores('Rojo'); // Rojo muestraColores('Verde','Rojo','Lila'); // Verde ?>
Valores devueltos por una función
Se utiliza return para devolver un valor. También se puede utilizar return para parar la ejecución de una función, sin necesidad de devolver nada.
<?php
function multiplica($num1, $num2) { return $num1 * $num2; } echo multiplica(3, 4); // 12 ?>
Para devolver múltiples valores, se utiliza un array y list(). Veámoslo fácilmente con un ejemplo:
<?php function listaColores() { $colores[] = 'Rojo'; $colores[] = 'Verde'; $colores[] = 'Amarillo'; return $colores; } list($col1,$col2,$col3) = listaColores(); echo "$col1 $col2 $col3"; // Rojo Verde Amarillo ?>
Si queremos tener una librería con nuestras propias funciones, creamos un fichero llamado por ejemplo nombre.library.php y así podríamos incluirlo desde cualquier otro fichero (con include o require, tal y como vimos en el artículo anterior).
EJERCICIOS
1) ¿Cuál será el valor de $num al final de la ejecución?
<?php $num = 3; function num($num="") { $num = 4; } echo $num; ?>
a) 3
b) 4
c) Error de sintaxis
2) ¿Cuál será el valor de $num al final de la ejecución?
<?php $num = 3; function num(&$num="") { $num = 4; } num($num); echo $num; ?>
a) 3
b) 4
c) Error de sintaxis
3) ¿Cuál será el valor de $num al final de la ejecución?
<?php $num = 3; function num(&$num="") { $num = 4; } num(); echo $num; ?>
a) 3
b) 4
c) Error de sintaxis
4) ¿Qué se mostrará por pantalla?
<?php function setColor($col) { $color = $col; } setColor('Amarillo'); echo "El color es: $color"; ?>
a) El color es:
b) El color es: Amarillo
c) Error de sintaxis
5) ¿Cuál será la salida?
<?php $a = 1; $b = 2; $c = 3; function pru() { global $b; $b += 3; $GLOBALS['a'] = 5; } pru(); echo "$a $b $c"; ?>
a) 1 2 3
b) 5 2 3
c) 5 5 3
6) ¿Qué se mostrará por pantalla?
<?php function pru($a, $a=3, $a=7) { return $a; } echo pru(13); ?>
a) 13
b) 7
c) 3
Comentarios
Publicar un comentario