Foros del Web » Programando para Internet » PHP »

Capturar Variables

Estas en el tema de Capturar Variables en el foro de PHP en Foros del Web. Estimados, tengo el siguiente problema, e creado una funcion para capturar todas las variables definidas en un archivo php, esto lo uso para caoturar errores ...
  #1 (permalink)  
Antiguo 08/01/2015, 10:16
 
Fecha de Ingreso: abril-2013
Mensajes: 24
Antigüedad: 11 años, 1 mes
Puntos: 0
Capturar Variables

Estimados, tengo el siguiente problema, e creado una funcion para capturar todas las variables definidas en un archivo php, esto lo uso para caoturar errores de ejecucion que se puedan producir y enviarlos por correo, algo parecido a un log. mi problema se produce al ejecutar la funcion, ya que si la instancio no me muestra nada pero si lo saco de una funcion y lo inserto directo a la hoja me funciona, que puedo hacer???

Asi no funciona :(

Código PHP:
class Funciones{
        public function 
Captura(){
            
$variables get_defined_vars();
            
$asignacion "";
            
$ignorelist = array("HTTP_POST_VARS",
                                
"HTTP_GET_VARS",
                                
"HTTP_COOKIE_VARS",
                                
"HTTP_SERVER_VARS",
                                
"HTTP_ENV_VARS",
                                
"HTTP_SESSION_VARS",
                                
"_ENV",
                                
"PHPSESSID",
                                
"SESS_DBUSER",
                                
"SESS_DBPASS",
                                
"HTTP_COOKIE",
                                
"GLOBALS",
                                
"_FILES",
                                
"_COOKIE"
                            
);

            
$asignacion .= "<table border = '1' cellpadding = '5' cellspacing = '0'><tr><td>Nombre</td><td>Valor</td><td>Tipo</td></tr>";
            foreach (
$variables as $key => $value) {
                if (!
in_array($key$ignorelist)) {
                    if (
is_array($value)) {
                        foreach (
$value as $llave => $valor) {
                            
$asignacion .= "<tr>";
                            
$asignacion .="<td>$".$key."['".$llave."'] </td><td> ".$valor." </td>";
                            
$asignacion .= "<td>";
                            
ob_start();
                            
var_dump($valor);
                            
$a ob_get_contents();
                            
ob_end_clean();
                            
$asignacion .= $a;
                            
$asignacion .= "</td>";
                            
$asignacion .= "</tr>";
                        }
                    }else{
                        
$asignacion .= "<tr>";
                        
$asignacion .= "<td>$".$key." </td><td> ".$value." </td>";
                        
$asignacion .="<td>";
                        
ob_start();
                        
var_dump($value);
                        
$a ob_get_contents();
                        
ob_end_clean();
                        
$asignacion .= $a;
                        
$asignacion .= "</td>";
                        
$asignacion .= "</tr>";
                    }

                }
            }

            
$asignacion .= "</table>";
            echo 
$asignacion;
        }
    } 


Código PHP:
session_start();

include 
'variables.php';
$funciones = new Funciones();

$nombre $_SESSION['Nombre'];
$apellido $_POST['Apellido'];
$edad $_GET['Edad'];

echo 
$funciones->Captura(); 



pero si lo pongo asi funciona

Código PHP:
session_start();

$nombre $_SESSION['Nombre'];
$apellido $_POST['Apellido'];
$edad $_GET['Edad'];

$variables get_defined_vars();
$asignacion "";
$ignorelist = array("HTTP_POST_VARS",
                    
"HTTP_GET_VARS",
                    
"HTTP_COOKIE_VARS",
                    
"HTTP_SERVER_VARS",
                    
"HTTP_ENV_VARS",
                    
"HTTP_SESSION_VARS",
                    
"_ENV",
                    
"PHPSESSID",
                    
"SESS_DBUSER",
                    
"SESS_DBPASS",
                    
"HTTP_COOKIE",
                    
"GLOBALS",
                    
"_FILES",
                    
"_COOKIE"
                
);

$asignacion .= "<table border = '1' cellpadding = '5' cellspacing = '0'><tr><td>Nombre</td><td>Valor</td><td>Tipo</td></tr>";
foreach (
$variables as $key => $value) {
    if (!
in_array($key$ignorelist)) {
        if (
is_array($value)) {
            foreach (
$value as $llave => $valor) {
                
$asignacion .= "<tr>";
                
$asignacion .="<td>$".$key."['".$llave."'] </td><td> ".$valor." </td>";
                
$asignacion .= "<td>";
                
ob_start();
                
var_dump($valor);
                
$a ob_get_contents();
                
ob_end_clean();
                
$asignacion .= $a;
                
$asignacion .= "</td>";
                
$asignacion .= "</tr>";
            }
        }else{
            
$asignacion .= "<tr>";
            
$asignacion .= "<td>$".$key." </td><td> ".$value." </td>";
            
$asignacion .="<td>";
            
ob_start();
            
var_dump($value);
            
$a ob_get_contents();
            
ob_end_clean();
            
$asignacion .= $a;
            
$asignacion .= "</td>";
            
$asignacion .= "</tr>";
        }

    }
}

$asignacion .= "</table>";
echo 
$asignacion

Muchas gracias por su ayuda!!
  #2 (permalink)  
Antiguo 09/01/2015, 10:45
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Capturar Variables

¿Ya leíste en el manual acerca de get_defined_vars() para saber cómo funciona?

Dicha función sólo extraerá las variables del contexto actual, y como la usas dentro de un método de una clase entonces su contexto es únicamente ese y ningún otro.

Al usarla fuera ya estás cambiando su contexto y por ende tomará las variables de ahí.

Lee el manual.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:26.