- Funciones en PHP: Definición y cómo usarlas
- Devolver valores en funciones con PHP
- Pasar argumentos por referencia en una función
- Devolver variables globales al usar funciones
Desde la versión 5.3.0 de PHP se puede añadir el símbolo & a los argumentos de una función para indicar al parseador que pasas la referencia de la variable no su valor. Esto significa que la función puede cambiar el valor de la variable tanto dentro como fuera de la función. Pasar argumentos por referencia supone un riesgo de seguridad y un dolor de cabeza para encontrar bugs. Además es contrario a la programación orientada a objetos.
Antes de continuar debes tener en cuenta que esta característica se eliminó a partir de PHP 5.4.0.
Diferencia con pasar un argumentos por referencia
Cuando se pasa una variable a un función, se hace una copia del valor de este para que sólo la función la use. De esta manera, el valor de la variable queda intacta fuera de la función. Cuando pasas una variable por referencia, la función puede modificar directamente esa variable.
Por ejemplo
1 2 3 4 5 6 7 8 9 |
$a="MAYUSCULAS"; function minusculas($variable){ $variable = strtolower($variable); } minusculas($a); echo $a; |
En este caso todas las variables que pasen a la función deberían convertirse en minúsculas pero, al no ser pasadas por referencia cuando se imprima la variable $a seguirá estando en mayúsculas.
Ahora vamos a pasarla por referencia
1 2 3 4 5 6 7 8 9 |
$a="MAYUSCULAS"; function minusculas(&$variable){ $variable = strtolower($variable); } minusculas($a); echo $a; |
Ahora cuando se imprima la variable $a estará en minúsculas ya que no se pasa una copia sino digamos la variable original.
Espero que hayáis entendido el concepto de pasar variables por referencia y recordad que esto es una práctica que ha dejado de estar en uso pero nunca se sabe cuando tocarás el código de un tercero y te encuentres con ello. A seguir picando 🙂