Lo había visto en código pero no conocía la teoría, muchas gracias Carlos
Así estoy yo!
Parametros por referencia
Cuando declaras una variable, lo que sucede es que se ocupa un lugar en tu memoria para guardar el valor de dicha variable. ¿Y como sabe PHP que lugar de memoria se ocupó? Bueno, PHP lo sabe por que guarda la referencia de ese lugar. Los nombres de lugares de memoria suelen ser coas como 0x123124234
Paso de parametros por referencia
Cuando pasamos parametros a una funcion, lo que hacemos es hacer una copia de la variable, es decir, estamos guardando el mismo valor en diferentes espacios
Hacer un paso por referencia significa que, en lugar de mandar una copia de la variable, estamos mandando la referencia de dicha variable. Es decir, estamos apuntando al mismo espacio en memoria gracias a que tenemos su referencia
Para acceder a la referncia en memoria usamos & en la variable deseada para acceder a la variable original
🤣 Retax: muchas personas le tienen miedo, buuuu
Yo:
¿Qué usos se le pueden dar, o cuando es recomendable usarla?
ni idea, solo para confundir por que simplemente paso la varible original.
Pues es algo muy sencillo, en si funciona como los punteros en lenguajes como c y c++, claramente esta muy bueno y claramente les estas pasando la variable original,por que quieres hacer el cambio de la variable original. Tu prueba a colocar un parametro sin "&" y de ahi simplemente le quieres decir que ese parametro sera igual a 2, no te permitira claramente. Con la practica y uso en proyectos se dara uno cuenta en que momentos.function incrementar(&$numero) { $numero++; } $valor = 5; incrementar($valor); echo $valor; // Esto imprimirá 6
No es complicado de igual forma solo tiene sus casos mira este codigo de chatgpt:
functionincrementar(&$numero){ $numero++;}$valor =5;incrementar($valor);echo $valor;// Esto imprimirá 6
Cuando declaramos una variable en PHP, lo que sucede es que se ocupa un lugar en la memoria de tú computadora para guardar el valor de dicha variable. ¿Cómo sabe PHP qué lugar en la memoria se ocupó? Bueno, PHP lo sabe porque guarda una referencia a ese lugar.
Supongamos que tenemos los siguientes nombres direcciones de memorias.
Carlos.
Mariana.
José.
Raúl.
Etc..
Declaramos una variable en PHP.
$edad =14;
La computadora lo guardará de forma aleatoria en algunas de las direcciones antes mencionadas, digamos que lo guarda en Mariana, es decir:
Carlos.
Mariana.
$edad = 14;
José.
Raúl.
Etc..
Ahora dentro de la dirección llamada Mariana se encuentra almacenada la variable $edad = 14;
Mariana es la referencia porque es el nombre que me dice en qué lugar de la memoria se guardó mi variable, es decir, hace referencia hacia el espacio donde está guardado.
¿Qué es el paso de parámetros por referencia?
Cuando pasamos parámetros a una función, lo que hacemos es hacer una copia de la variable, es decir, estamos guardando el mismo valor en diferentes espacios de memoria.
¿Qué es el paso de parámetros por referencia?
Hacer un paso por referencia significa que, en lugar de mandar una copia de la variable, estamos mandando la referencia de dicha variable. Es decir, estamos apuntando al mismo espacio en memoria gracias a que tenemos su referencia.
<?php
// Variable original.$cat ="Meow!";functionmake_a_cat_bark(&$cat_dog){/**
* Al recibir una variable por referencia '&$cat_dog',
* modifica el valor de la variable original '$cat'
*/ $cat_dog ="Woof!";}// Llamamos a la función y enviamos el parámetro.make_a_cat_bark($cat);echo $cat .PHP_EOL;// Imprimirá 'Woof!'
Muy interesante este tema, supongo que esto impacta favorablemente en el rendimiento de la aplicación, pero como podría revisar ese impacto? hay alguna manera?
en mi caso no conozco una, pero esto hay que usarlo con cuidado, porque estamos mutando una variable en un scope mas alto
He usado esto, pero nunca lo entendí como hasta hoy :)
BROOO QUE LOCURA DE CLASE JAJAJA
Salida:
¿Cuál sería la diferencia entre usar "use" y paso por referencia en una función?
¿Cuándo nos referimos a memoria, estamos hablando de que estamos utilizando literalmente nuestra memoria Ram? ¿Me equivoco?
Esto de Variables pro Refferencia se entiende mejor si antes vienes de C/C++ con un buen backGround en typo de varaibles y pointers* en C .
Entonces loque estamos ahciendo es cambiar el valor de una variable en memoria por referencia. 😳
Me gustó mucho esta clase, entiendo que, cuando pasas parámetros por referencia, estás teniendo la posibilidad que dentro de la función modifiques el valor inicial de la variable. Cuando no lo hacemos, solo estamos pasando el valor de la variable para utilizarla dentro de la función y retornar un valor diferente en un espacio de memoria diferente, o retornar el mismo valor inicial pero, en un espacio de memoria diferente.
🐘 En PHP, los argumentos se pasan a las funciones por valor por defecto, lo que significa que se utiliza una copia del valor en la función y la variable que se pasó a la función no puede ser modificada. Sin embargo, si deseas que una función modifique sus argumentos, necesitas pasar los argumentos por referencia.
Aquí hay una explicación detallada de cómo funcionan los parámetros por referencia en PHP:
Sintaxis: Para pasar un argumento por referencia, debes anteponer el operador & al nombre del parámetro en la definición de la función. Por ejemplo:
function foo(&$var) {
  $var++;
}
$a = 5;
foo($a); // $a ahora es 6
En este código, $a es pasado por referencia a la función foo, lo que permite que modifique el valor de $a.
Modificación de Variables: Cuando pasas una variable por referencia, cualquier cambio que la función haga en el argumento se refleja en la variable original que se pasó. Por ejemplo:
function add\_some\_extra(&$string) {
  $string .= ' and something extra.';
}
$str = 'This is a string,';
add\_some\_extra($str);
echo $str; // Salida: 'This is a string, and something extra.'
En este ejemplo, la función add_some_extra modifica la variable $str porque se pasa por referencia a la función.
Ámbito de la Variable: Cuando las variables en PHP se pasan por valor, el ámbito de la variable definida a nivel de función está ligado dentro del ámbito de la función, y cambiar cualquiera de las variables no tiene ningún efecto en ninguna de las variables. Sin embargo, cuando pasas variables por referencia, el ámbito de la variable se extiende fuera de la función, permitiendo que la función modifique la variable original.
Pasar parámetros por referencia es una característica poderosa en PHP, ya que permite que las funciones tengan una especie de "canal de comunicación" con el ámbito externo, lo que hace posible no solo devolver valores, sino también modificar variables desde el ámbito de llamada. Esto puede ser particularmente útil cuando necesitas modificar múltiples variables o cuando trabajas con estructuras de datos grandes donde pasar por valor (copiar) sería demasiado intensivo en recursos.
El equivalente a trabajar con apuntadores
no sabia que podia hacer eso.
muy interesantes &$variables y asume el lugar donde se guardo el valor en memoria, perimiéndome editar una variable de ámbito global sin definirla como global.
Sería equivalente a poner dentro de la función
global $cat
y no ponerle ningún parámetro a la función