¿hay una función de php que agarra todas las variables del scope y las mete en un array asociativo donde la key es el nombre de la variable?
Sí, la función es get_defined_vars().
Esta función devuelve un array asociativo con todas las variables definidas en el ámbito actual, donde la clave es el nombre de la variable y el valor es su contenido.
$var1 = "hola";
$var2 = 123;
$variables = get_defined_vars();
// $variables es:
// [
// 'var1' => 'hola',
// 'var2' => 123,
// 'GLOBALS' => [...],
// '_POST' => [...],
// '_GET' => [...],
// // ... y más superglobales
// ]Detalles importantes:
Alcance: Captura todas las variables visibles en el ámbito donde se llama (locales, globales, superglobales como
$_GET,$_POST,$GLOBALS, etc.).Uso común: Es útil para depuración, serialización o para transferir todas las variables del entorno actual a otro contexto.
Alternativa para solo globales: Si solo quieres las variables globales explícitamente declaradas, puedes usar el array superglobal
$GLOBALS, que es en sí mismo un array asociativo con los nombres de las variables globales como claves.
¿hay una función global de Laravel que agarra todas las variables del scope y las mete en un array asociativo donde la key es el nombre de la variable?
No existe una función global de Laravel que capture automáticamente todas las variables del scope actual y las convierta en un array asociativo.
Sin embargo, Laravel proporciona la función de ayuda compact() para realizar esta conversión manualmente. Esta función acepta una lista de nombres de variables como argumentos y devuelve un array asociativo donde las claves son los nombres de las variables y los valores son sus contenidos correspondientes.
$nombre = 'Juan';
$edad = 30;
$data = compact('nombre', 'edad');
// Resultado: ['nombre' => 'Juan', 'edad' => 30]Para acceder a variables globales desde dentro de una función o método en PHP (y por ende en Laravel), se debe utilizar la palabra clave global o el array superglobal $GLOBALS, pero no hay un método automático para volcar todo el scope.
Comentarios