Lo había visto en código pero no conocía la teoría, muchas gracias Carlos
Introducción
¿Debería seguir usando versiones antiguas de PHP?
Documentación: la biblia de PHP
¿Qué es PHP Doc?
Entornos virtuales
¿Para qué sirven los entornos virtuales?
Creando un entorno virtual con Vagrant
Creando un entorno virtual con Laragon
¿Qué son los Virtual Hosts?
Configurando Virtual Hosts en Windows
Configurando Virtual Hosts en Linux
Configurando Virtual Hosts en macOS
PHP con esteroides
Constantes en PHP
¿Variables... variables?
Scope de PHP
Variables superglobales
Redirecciones
Match
Funciones a profundidad
Funciones variables
Parámetros por referencia
Argumentos a profundidad
Named arguments
Funciones anónimas
Arrow functions
Declaraciones de tipo escalar
Declaraciones de tipo devolución
Cierre
Aprendamos sobre cookies, sesiones y modularización de código
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Carlos Eduardo Gómez García
Aportes 12
Preguntas 4
Lo había visto en código pero no conocía la teoría, muchas gracias Carlos
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
<h5>Paso de parametros por referencia</h5>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
$cat = "Meow!";
function make_a_cat_bark(&$cat_dog) {
$cat_dog = "Woof!";
}
make_a_cat_bark($cat);
echo $cat;
echo "\n";
🤣 Retax: muchas personas le tienen miedo, buuuu
Yo:
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.
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!";
function make_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!'
He usado esto, pero nunca lo entendí como hasta hoy 😃
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.
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
Codigo de la clase
<?php
$cat = "meow";
function make_a_cat_bark(&$cat_dog){
$cat_dog = "woof";
}
make_a_cat_bark($cat);
echo $cat;
echo "\n";
?>
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?