22. PARÁMETROS POR FUNCIÓN Y REFERENCIA

 

Parámetros por función y referencia

·         Por valor

function ejemplo ($param){

$param++;

}

·         Por referencia

function ejemplo (&$param){

$param++;

}

Vamos a ver un ejemplo con una función pasada por valor:

                  <?php

            function incrementa($valor){

                  $valor++;

                  return $valor;

            }

            echo incrementa(5);

            ?>

Si ejecutamos este script nos va a dar un resultado de 6 ya que el número que le pasamos la función lo que hace es incrementarlo. Si hacemos esto:

            <?php

            function incrementa($valor){

                  $valor++;

                  return $valor;

            }

            $numero=5;

            echo incrementa($numero);

            ?>

Es el mismo resultado, nos incrementa a 6. Si hacemos esto:

            <?php

            function incrementa($valor){

                  $valor++;

                  return $valor;

            }

            $numero=5;

            echo incrementa($numero) . "<br>";

            echo $numero;

            ?>

Si tenemos la variable $numero que vale 5 la pasamos por parámetro a la función nos la va a incrementar en 6, pero en el segundo echo la variable sigue valiendo 5, ya que la función tiene en cuenta lo que le hemos pasado por parámetro, no tiene en cuenta que en el resto del código esa variable valga 5 u otro valor.



Si ahora en lugar de pasarla por valor la pasamos por referencia:

                  <?php

            function incrementa(&$valor){

                  $valor++;

                  return $valor;

            }

            $numero=5;

            echo incrementa($numero) . "<br>";

            echo $numero;

            ?>

Por referencia sí que va a tener en cuenta la variable $numero fuera de la función por lo que va a imprimir dos 6



Vemos otro ejemplo:

<?php

            function cambia_mayus($param){

                  $param=strtolower($param);

                  $param=ucwords($param);

                  return $param;

            }

            $cadena="hOLA mUnDo";

            echo cambia_mayus($cadena) . "<br>";

            echo $cadena;

            ?>

Lo que le indicamos que la cadena de texto que le pasamos nos la convierta en minúscula y después la primera letra de cada palabra en mayúscula, pero solo va a tener en cuenta el parámetro que le pasamos, no va a tener en cuenta fuera de la función como está construida esa frase si en mayúscula o minúscula, o algunas mayúsculas o minúsculas.



Si pasamos la función por referencia:

            <?php

            function cambia_mayus(&$param){

                  $param=strtolower($param);

                  $param=ucwords($param);

 

                  return $param;

            }

            $cadena="hOLA mUnDo";

            echo cambia_mayus($cadena) . "<br>";

            echo $cadena;

            ?>

Por referencia sí que tiene en cuenta y mantiene el valor de la variable que le pasamos por parámetro:



21. FUNCIONES << >> 23. PROGRAMACIÓN ORIENTADA A OBJETOS



0 comentarios:

Publicar un comentario

Buscar este blog