Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

debug_backtrace no muestra la traza que quiero

Estas en el tema de debug_backtrace no muestra la traza que quiero en el foro de Frameworks y PHP orientado a objetos en Foros del Web. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original class a {     function Imprimir ( )     {         echo 'Hola<br>' ; ...
  #1 (permalink)  
Antiguo 15/02/2012, 06:07
Avatar de cluster28  
Fecha de Ingreso: enero-2008
Ubicación: Donostia - San Sebastián
Mensajes: 756
Antigüedad: 16 años, 4 meses
Puntos: 32
debug_backtrace no muestra la traza que quiero

Código PHP:
Ver original
  1. class a
  2. {
  3.     function Imprimir()
  4.     {
  5.         echo 'Hola<br>';
  6.     }    
  7. }
  8.  
  9. class B
  10. {
  11.     public function ImprimirA()
  12.     {
  13.         $a=new a();
  14.         $a->Imprimir();
  15.     }
  16. }
  17.  
  18. $b=new b();
  19. $b->ImprimirA();

Resultado:
Código HTML:
Ver original
  1. Hola
  2. Array ( )

Lo quiero es que me muestre una traza de todos los objetos creados y las funciones llamadas.

Ya tenía esta función en mi código pero para conocer los saltos dentro de una clase, pero si la pongo en un secuencia de sentencias muestra la traza vacía. Si pongo "print_r(debug_backtrace());" debajo de "echo 'Hola<br>';" muestra la traza que quiero. Pero claro, no voy a poner esta función dónde termina cada proceso.

No he encontrado ninguna función que me pueda servir.

Gracias.
  #2 (permalink)  
Antiguo 15/02/2012, 09:45
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: debug_backtrace no muestra la traza que quiero

Pues es por eso mismo, debug_backtrace() funciona sobre el scope que fue llamado, al ponerlo en el "main" (o sea en tu script principal) no te va a mostrar nada porque no hay trazas de llamadas, al ponerlo en tu clase te muestra todo porque actua sobre el scope que fue llamado.

Saludos.
  #3 (permalink)  
Antiguo 15/02/2012, 09:47
Avatar de cluster28  
Fecha de Ingreso: enero-2008
Ubicación: Donostia - San Sebastián
Mensajes: 756
Antigüedad: 16 años, 4 meses
Puntos: 32
Respuesta: debug_backtrace no muestra la traza que quiero

Vale entendido, pero hay alguna manera de saber que objetos y métodos se han usado hasta un punto?
  #4 (permalink)  
Antiguo 15/02/2012, 10:11
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: debug_backtrace no muestra la traza que quiero

No creo que PHP te pueda dar esa información, a menos afuera del scope como lo estas pidiendo, podrías intentar usar Reflection para ello pero tampoco creo que te sirva mucho fuera del método.

¿Que es lo que estas intentando? Ya que precisamente eso es lo que te brinda un debugger como XDebug para PHP, pero lo malo es que alenta la ejecución de PHP.

Saludos.
  #5 (permalink)  
Antiguo 15/02/2012, 10:16
Avatar de cluster28  
Fecha de Ingreso: enero-2008
Ubicación: Donostia - San Sebastián
Mensajes: 756
Antigüedad: 16 años, 4 meses
Puntos: 32
Respuesta: debug_backtrace no muestra la traza que quiero

Quiero generar un log de los objetos y métodos, y si puede ser, respetando el orden de invocación de partes de código en algunos scripts (controladores).
  #6 (permalink)  
Antiguo 15/02/2012, 10:33
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: debug_backtrace no muestra la traza que quiero

Pues es complicado, te digo podrías usar Reflection para invokar el método y obtener la traza, pero a mi parecer le estarías metiendo un retraso a tu sistema que no necesita.

Saludos.

Etiquetas: clase, muestra, quiero, traza
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 16:48.