Parámetros

Los parámetros son el mecanismo por el cual podemos pasarle información a una función, en forma de variables, a la hora de llamarla. Se especifican entre paréntesis detrás del identificador de la función durante su definición, separados por comas, y no es necesario especificar su tipo. En el siguiente ejemplo, hemos definido una función llamada create_html_table que crea una tabla a partir de un array. La función acepta un único parámetro, el array a mostrar en forma de tabla:

function create_html_table($datos)
{
   echo '';
   foreach ($datos as $valor)
      echo "<tr><td>$valor</td>\n";
   echo '';
}

En la instrucción echo se ha incluido el carácter especial \n, que representa un salto de línea.
Si introducimos elementos <br> crearemos saltos de línea en la visualización hecha por el navegador de nuestra página, pero no en el propio código HTML.
Si no incluyéramos este carácter y viéramos el código fuente del documento HTML enviado por el servidor nos sorprenderíamos al observar todo el código HTML de la tabla en una única línea.

A la hora de llamar a la función, simplemente incluiremos entre paréntesis, detrás del identificador de la función, la variable o variables que corresponda. Siguiendo con nuestro ejemplo, podríamos hacer lo siguiente:

$mis_datos = array('Linea 1', 'Linea 2', 'Linea 3');
create_html_table($mis_datos);

En este caso le estamos diciendo a la función create_html_table que la matriz que queremos que muestre en forma de tabla es el array $mis_datos.

PHP permite también definir funciones con un número variable de parámetros , en lugar de un número fijo de ellos. En ese caso, deberemos distinguir en la declaración de la función entre los parámetros que son obligatorios, y aquellos que son optativos. Los optativos siempre deberán tener un valor predeterminado, y los obligatorios deberán aparecer siempre en primer lugar. Vamos a añadir a la función create_html_table de nuestro ejemplo anterior tres parámetros optativos, que se distinguirán de los obligatorios al asignársele un valor durante la definición de la función:

function create_html_table2($datos, $width=0, $color='black', $type='solid')
{
   echo '<table style="border: ' . $width . 'px ' . $color . ' ' . $type . ' "> ';
   foreach ($datos as $valor)
      echo "<tr><td>$valor</td>\n";
   echo '';
}

Podremos llamar a esta función usando de uno a cuatro parámetros. Puedes probar con el siguiente código.

$mis_datos = array('Linea 1', 'Linea 2', 'Linea 3');
create_html_table2($mis_datos);
create_html_table2($mis_datos, 1);
create_html_table2($mis_datos, 1, 'red');

Otra cuestión que debemos tener en cuenta acerca de los parámetros de función es que éstos pueden ser pasados por valor o por referencia.

Los parámetros que son pasados por valor se reciben como una copia de la variable original. Esto quiere decir que aunque hagamos algún cambio al valor del parámetro dentro del cuerpo de la función, al salir de ésta la variable original seguirá teniendo el mismo.

Por su parte, cuando se pasa un parámetro por referencia, lo que en realidad se está haciendo es pasar un puntero o referencia a la variable original. Por lo tanto, cualquier cambio que hagamos al valor del parámetro en la función afectará también a la variable original.

En PHP, y por defecto, los parámetros son pasados por valor. Para pasar un parámetro por referencia deberemos colocar el símbolo "&" delante del nombre del parámetro en la definición de la función, como se puede ver en el ejemplo siguiente, donde el primer parámetro se pasa por referencia y el segundo por valor:

function incrementar(&$valor, $acumulado = 1)
{
   $valor += $acumulado;
}
$a = 10;
echo '$a = ' . $a . '<br />';
incrementar($a);
echo '$a = ' . $a . '<br />';

Tras llamar a la función incrementar, podremos comprobar que el valor de la variable $a ha cambiado, al haber sido pasada por referencia y haberse modificado su valor en el interior de la función.

[PHP7] Declaraciones de tipo escalar

A partir de la versión 7 se ha agregado nuevos tipos de variables que podemos definir que esperan nuestras funciones, estos son los tipos int, float, bool y string. Estas pueden ser de tipo coercitivo o estricto. En la primera forma por ejemplo, si una variable de tipo string recibe un número entero, lo intentará tomar como string, sin embargo si hemos declarado el tipo estricto devolverá un error.

Las declaraciones de tipo escalar son de dos tipos: coercitivo (por defecto) y estricto. Ahora se pueden forzar los siguientes tipos para parámetros (tanto coercitiva como estrictamente): cadenas de caracteres (string), números enteros (int), números decimales (float), y booleanos (bool). Estos se añaden a los tipos introducidos en PHP 5: nombres de clases, interfaces, arrays y callables.

results matching ""

    No results matching ""