Traductor

Pasar Argumentos en PHP

Las funciones pueden recibir argumentos para adoptar su operativa a cada caso.
En realidad estd no es del todo nuevo, recordemos cuando empleamos la función gettype() en  el capítulo de Conocer y Cambiar el tipo de Variables en PHP, para recuperar el tipo de valor contenido en una variable colocado entre paréntesis gettype($dato); el nombre de esa variable colocado entre los paréntesis, constituye el argumento o parámetro que le pasamos a la función.
Cuando se trata de nuestras propias funciones el sistema es prácticamente el mismo.
Entonces al definir la función, es necesario especificar que argumentos debe recibir.
Veamos algunos Ejemplos.
<?php
                function mostrarUnNumero($mostrar){
                               echo ("Número $mostrar");
                }
                $numero=3;
                mostrarUnNumero($numero);
?>
Ejecute el script vea que en el navegador se muestra el número 3.

Paso a Paso

  • Observe como hemos definido la función y como la hemos invocado.
  • En invocación hay un argumento que es la variable $numero.
  • Cuando se efectúa esta llamada a la función, esta variable se aloja dentro de la función en la variable $mostrar, que además aparece en la definición de la función.
  • Observe, dentro del cuerpo de la función como tomamos la variable $mostrar que ha recibido el valor de $numero.
Siempre debe haber el mismo número de argumentos en la definición de la función que en la invocación a la misma. 
En caso de que haya mas de un argumento estos deben estar separados por comas.
Observe el siguiente script:
<?php
                function producto($valor1, $valor2){
                               $resultado=$valor1*$valor2;
                               echo ("Resultado: $resultado");
                }
                $numero1=3;
                $numero2=4;
                producto($numero1, $numero2);
?>
Observe las líneas resaltadas y como se definen las funciones con mas de un argumento.

PHP nos ofrece tres funciones para el manejo y/o comprobación de los argumentos, las cuales son:
  • fun_num_args()
  • fun_get_arg()
  • fun_get_args()
Para ejemplificar estas funciones veamos el siguiente ejemplo:
<?php
                function comprobarArgumentos(){
//Uso de func_num_args().
                               $numeroDeArgumentos=func_num_args();
                               echo ("<u>Uso de func_num_args().</u><br>");
                               echo ("El número de argumentos es $numeroDeArgumentos<br>");
                               echo ("<br>");
//Uso de func_get_arg().
                               echo ("<u>Uso de func_get_arg().</u><br>");
                               for ($contador=0; $contador<$numeroDeArgumentos; $contador++){
                                               $argumento=func_get_arg($contador);
                                               echo ("El argumento $contador tiene el valor $argumento<br>");
                               }
                               echo ("<br>");
//Uso de func_get_args()
                               echo ("<u>Uso de func_get_args().</u><br>");
                               $matrizDeArgumentos=func_get_args();
                               for ($contador=0; $contador<$numeroDeArgumentos; $contador++){
                                               $argumento=$matrizDeArgumentos[$contador];
                                               echo ("El argumento $contador tiene el valor $argumento<br>");
                               }
                }
                $variable1=1;
                $variable2="HOLA";
                $variable3="ADIÓS";
                comprobarArgumentos($variable1, $variable2, $variable3);
?>
Lo que veremos en el navegador será:
Cunado se le pasan argumentos a una función, estos se pueden pasar por valor o por referencia. Veamos como funciona:

Paso por Valor

<?php
                function cuadrado($numero){
                               $numero*=$numero;
                               echo ("En la función el número se eleva al cuadrado, obteniendo el resultado: $numero<br>");
                }
                $numero=3;
                echo ("El número, antes de invocar la función vale: $numero<br>");
                cuadrado($numero);
                echo ("El número, después de invocar la función vale: $numero");
?>
Lo que veremos en el Navegador será:

Paso a Paso

  • Notas:
    • Fíjese en que tenemos una variable llamada $numero que se declara fuera de la función, asignándole el valor 3.
    • Esta variable se pasa como argumento a la función y, en la definición de la misma, aparece también la variable $numero. Sin embargo, aunque tiene el mismo nombre, no es la misma variable.
    • La variable que aparece en la definición de la función, pertenece exclusivamente a la función, mientras que a que aparece afuera, pertenece a todo el script.    
  • Veamos mas a detalle el script:
    • En primer lugar se ejecuta la línea
$numero=3;
      • Como ya sabemos la función se ha cargado en memoria, pero no se ejecutará mientras no se invoque.
    •  A continuación se ejecutará la siguiente línea:
echo ("El número, antes de invocar la función vale: $numero<br>");
      • Esto nos muestra en la página el valor de la variable, en a primera linea, la cual vimos en la imagen anterior.
    • Después se invoca la función que definimos previamente, mediante la linea: 
cuadrado($numero);
    • Dentro de la función, el valor de $numero se eleva al cuadrado, esta operación ocurre dentro del cuerpo de la función.
function cuadrado($numero){
         $numero*=$numero;
         echo ("En la función el número se eleva al cuadrado, obteniendo el resultado: $numero<br>");
                }
    • Después se muestra el valor de $numero al cuadrado por la misma línea que esta dentro del cuerpo de a función.
function cuadrado($numero){
         $numero*=$numero;
         echo ("En la función el número se eleva al cuadrado, obteniendo el resultado: $numero<br>");
                }
    • Cuando termina la función, continúa la ejecución del script con la linea:
   echo ("El número, después de invocar la función vale: $numero");
Observe como únicamente el valor se altera cuando se ejecuta la parte de la función que definimos previamente. Esto es así porque, porque cuando se invoca la función no se le pasa la variable del argumento, sino solo su valor. A esto e a lo que se llama el paso de arguemtnos por valor.

 Paso por Referencia

Como contra parte está el paso de argumentos por referencia, en el que si se pasa la variable original y se opera con ella, la variable original se verá afectada.
Para indicar que un argumento se va a pasar por referencia, se le antepone el signo & en la definición de la función.
Veamos el siguiente script:
<?php
                function cuadrado(&$numero){
                               $numero*=$numero;
                               echo ("En la función el número se eleva al cuadrado, obteniendo el resultado: $numero<br>");
                }
                $numero=3;
                echo ("El número, antes de invocar la función vale: $numero<br>");
                cuadrado($numero);
                echo ("El número, después de invocar la función vale: $numero");
?>
Lo que aparecerá en el navegador será:
Como verá lo que mencionamos anteriormente, la variable al ser afectada por la función, el valor de la misma también cambiará para todo el script.
En dado caso de que necesite pasar un argumento por valor y otro por referencia lo puede hacer de la siguiente manera:
miFuncion($arg1, $arg2, &$arg3);
De este modo $arg1, $arg2, serán pasados por valor mientras que $arg3, será pasado por referencia.

Temas referentes a la Definición de Funciones

Recuerden Comentar Compartir y Darle 

Hasta la Próxima

Si te hemos ayudado : )
Te agradeceríamos que apoyaras este proyecto

0 comentarios:

Publicar un comentario