Este capítulo explica todos los detalles relativos al paso de parámetros en las funciones PHP.
En el artículo anterior del Manual de PHP ya comenzamos a explicar las funciones en PHP. Como hemos visto, crear nuestras propias funciones no es complicado, pero tenemos que aprender diversas cosas nuevas para extraer toda su potencia.
Ahora vamos a explicar algunos detalles adicionales sobre la definición y uso de funciones en PHP, para ampliar la información anterior. En concreto, hablaremos sobre los parámetros en las funciones, ya que hay mucho más que decir para abarcar todas las posibilidades de PHP: el paso de parámetros por valor, paso por referencia, los valores predeterminados, etc. Además en este artículo veremos nuevos ejemplos de funciones que nos sirvan para ir practicando con nuevos ejemplos en PHP.
Paso de parámetros
Los parámetros son los datos que reciben las funciones y que utilizan para realizar las operaciones de esa función. Una función puede recibir cualquier número de parámetros, incluso ninguno.
Si la función que estamos construyendo no necesita recibir ningún parámetro, al declararla, simplemente indicamos los paréntesis vacíos en la cabecera. Por ejemplo en la siguiente función mostramos la fecha del día de hoy. Para ello nos apoyamos en otra función incluida en PHP: date().
function fecha_hoy() {
echo date('d/m/Y');
}
La intención de la anterior función es mostrar la fecha del día actual. Como siempre mostrará el día de hoy, no necesito pasarle ningún parámetro, siempre hará lo mismo. Las funciones que no requieren parámetros se las invoca indicando los paréntesis vacíos.
fecha_hoy();
En el caso que queramos, o necesitemos, recibir parámetros para implementar una función, a la hora de definirla, en la cabecera, se definen los parámetros que va a recibir.
function f1 ($parametro1, $parametro2)
Así definimos una función llamada f1 que recibe dos parámetros. Como se puede observar, no se tiene que definir el tipo de datos de cada parámetro. Es decir, la función necesitará que le enviemos dos datos, pero no le importará que sean de un tipo u otro.
Los parámetros tienen validez durante la ejecución de la función. Se dice que tienen un ámbito local a la función donde se están recibiendo. Cuando la función se termina, los parámetros dejan de existir.
Los parámetros se pasan por valor
El paso de parámetros en PHP se realiza por valor. "Por valor" es una manera típica de pasar parámetros en funciones, quiere decir que el cambio de un dato de un parámetro no actualiza el dato de la variable que se pasó a la función. Por ejemplo, cuando invocamos una función pasando una variable como parámetro, a pesar de que cambiemos el valor del parámetro dentro de la función, la variable original no se ve afectada por ese cambio. Puede que se vea mejor con un ejemplo:
function porvalor ($parametro1){
$parametro1="hola";
echo "<br>" . $parametro1; //imprime "hola"
}
$mivariable = "esto no cambia";
porvalor ($mivariable);
echo "<br>" . $mivariable; //imprime "esto no cambia"
Esta página tendrá como resultado:
hola
esto no cambia
Paso de parámetros por referencia
En contraposición al paso de parámetros por valor, está el paso de parámetros por referencia. En este último caso, el cambio del valor de un parámetro dentro de una función sí afecta al valor de la variable original.
Podemos pasar los parámetros por referencia si, en la declaración de la función, colocamos un "&" antes del parámetro.
function porreferencia(&$cadena) {
$cadena = 'Si cambia';
}
$str = 'Esto es una cadena';
porreferencia ($str);
echo $str; // Imprime 'Si cambia'
Este script mostrará por pantalla 'Si cambia'.
Parámetros por defecto
Podemos definir valores por defecto para los parámetros. Los valores por defecto sirven para que los parámetros contengan un dato predefinido, con el que se inicializarán si no se le pasa ningún valor en la llamada de la función. Los valores por defecto se definen asignando un dato al parámetro al declararlo en la función.
function pordefecto ($parametro1="pepe";$parametro2=3)
Para la definición de función anterior, $parametro1 tiene como valor por defecto "pepe"
, mientras que $parametro2 tiene 3
como valor por defecto.
Si llamamos a la función sin indicar valores a los parámetros, estos tomarán los valores asignados por defecto:
pordefecto () // $parametro1 vale "pepe" y $parametro2 vale 3
Si llamamos a la función indicando un valor, este será tenido en cuenta para el primer parámetro.
pordefecto ("hola") // $parametro1 vale "hola" y $parametro2 vale 3
Ten en cuenta que, en el caso que quieras usar parámetros con valores por defecto, estás obligado a que éstos se declaren al final en la lista de parámetros de la cabecera de la función.
Miguel Angel Alvarez
Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...