Estoy buscando un método para que mi manejador de excepciones descargue las variables locales de la función en la que se produjo la excepción. ¿Es esto posible?PHP: Cómo volcar todas las variables locales en un manejador de excepciones
Respuesta
get_defined_vars()
devolverá una matriz de todas las variables definidas. A continuación, puede recorrer cada uno y volcar los contenidos, o usar var_dump(get_defined_vars())
para volcarlos en masa.
Probar var_dump(get_defined_vars());
. Eso debería volcar todas las variables definidas en el alcance.
Puede haberlo definido todo (incluso predefinido) llamando a la función get_defined_vars.
Las variables locales (alcance de la función actual) no están disponibles sin algunas herramientas de depuración.
Creo que es mejor configurar xDebug.
Volca todo el entorno de forma automática.
Y obtendrá cada vez que algo como:
Catchable fatal error: Argument 1 passed to RogoDeal::getDealerForMe() must be an instance of RogoParticipant, instance of myUser given in G:\webroot\v1-1-5.omyconf\lib\model\doctrine\RogoDeal.class.php on line 512
Call Stack:
0.0002 336944 1. {main}() G:\webroot\v1-1-5.omyconf\web\frontend_dev.php:0
0.1244 1983360 2. sfContext->dispatch() G:\webroot\v1-1-5.omyconf\web\frontend_dev.php:13
0.1244 1983392 3. sfFrontWebController->dispatch() G:\webroot\symfony\lib\util\sfContext.class.php:170
0.1248 1987104 4. sfController->forward() G:\webroot\symfony\lib\controller\sfFrontWebController.class.php:48
0.1500 2085896 5. sfFilterChain->execute() G:\webroot\symfony\lib\controller\sfController.class.php:238
0.1504 2086752 6. sfRenderingFilter->execute() G:\webroot\symfony\lib\filter\sfFilterChain.class.php:53
0.1504 2086752 7. sfFilterChain->execute() G:\webroot\symfony\lib\filter\sfRenderingFilter.class.php:33
0.1508 2087584 8. sfBasicSecurityFilter->execute() G:\webroot\symfony\lib\filter\sfFilterChain.class.php:53
0.1512 2087584 9. sfFilterChain->execute() G:\webroot\symfony\lib\filter\sfBasicSecurityFilter.class.php:72
0.1515 2088408 10. sfCacheFilter->execute() G:\webroot\symfony\lib\filter\sfFilterChain.class.php:53
0.1549 2089920 11. sfFilterChain->execute() G:\webroot\symfony\lib\filter\sfCacheFilter.class.php:65
0.1553 2090744 12. sfExecutionFilter->execute() G:\webroot\symfony\lib\filter\sfFilterChain.class.php:53
14.8569 19778472 13. sfExecutionFilter->handleView() G:\webroot\symfony\lib\filter\sfExecutionFilter.class.php:47
14.8570 19778472 14. sfExecutionFilter->executeView() G:\webroot\symfony\lib\filter\sfExecutionFilter.class.php:116
14.8662 19806016 15. sfPHPView->render() G:\webroot\symfony\lib\filter\sfExecutionFilter.class.php:155
14.8673 19806352 16. sfPHPView->renderFile() G:\webroot\symfony\lib\view\sfPHPView.class.php:185
14.8801 19926728 17. require('G:\webroot\v1-1-5.omyconf\apps\frontend\modules\program\templates\markedSuccess.php') G:\webroot\symfony\lib\view\sfPHPView.class.php:75
16.2403 21796104 18. sfOutputEscaperIteratorDecorator->getDealerForMe() G:\webroot\v1-1-5.omyconf\apps\frontend\modules\program\templates\markedSuccess.php:48
16.2403 21796304 19. sfOutputEscaperObjectDecorator->__call() G:\webroot\v1-1-5.omyconf\apps\frontend\modules\program\templates\markedSuccess.php:48
16.2404 21796552 20. call_user_func_array() G:\webroot\symfony\lib\escaper\sfOutputEscaperObjectDecorator.class.php:64
16.2404 21796736 21. RogoDeal->getDealerForMe() G:\webroot\symfony\lib\escaper\sfOutputEscaperObjectDecorator.class.php:64
Dump $_SERVER
$_SERVER['REQUEST_METHOD'] = 'GET'
$_SERVER['REQUEST_URI'] = '/frontend_dev.php/program/marked?interface=mobile'
$_SERVER['HTTP_USER_AGENT'] = 'Opera/9.80 (Windows NT 6.1; U; Edition Ukraine Local; ru) Presto/2.10.229 Version/11.60'
Dump $_REQUEST
$_REQUEST['interface'] = 'mobile'
Variables in local scope (#21):
$dealer = *uninitialized*
$me = *uninitialized*
$owner = *uninitialized*
Se hace increíblemente fácil de depuración.
El controlador de excepciones nunca tendrá acceso a las variables locales de la función que generó la excepción porque esas variables son locales. No creo que haya una forma de obtener acceso a la tabla de variables de un marco de pila específico del código PHP de usuario.
Puede hacerlo utilizando xdebug como depurador de pasos. Con los puntos de interrupción (por ejemplo, en el manejador de excepciones), puede examinar cada marco de pila.
Al lado de depuración paso a paso, también hay algunas opciones de visualización es posible que desee hacer uso de, como:
se tiene acceso a las variables locales, si la excepción será atrapado en el mismo ámbito de funciones/se lanza:
<?php
try
{
$var = 123;
throw new Exception();
}
catch (Exception $e)
{
var_dump($var); // int(123)
}
?>
- 1. acceso todas las variables locales
- 2. Imprimir todas las variables globales/variables locales?
- 3. Java ¿cómo imprimir todas las variables locales?
- 4. en php ¿hay alguna manera de volcar "todas" las variables con su valor correspondiente?
- 5. C# función reutilizable para volcar el valor actual de las variables locales
- 6. ¿Cómo declarar las variables locales en postgresql?
- 7. ¿Cómo interceptarías todas las excepciones?
- 8. ¿Cómo puedo cargar todas las claves de un dict como variables locales, un mejor enfoque?
- 9. ¿Cómo se definen las variables estáticas locales locales de subprocesos?
- 10. Cómo capturar todas las variables en una publicación (PHP)
- 11. PHP necesita recortar todas las variables $ _POST
- 12. Hacer todas las variables globales, PHP
- 13. ¿Cómo enumero todas las variables locales dentro de un método/función de Java?
- 14. C# Cómo volcar todas las variables y valores actuales durante el tiempo de ejecución
- 15. Cómo acceder a las variables locales dinámicas
- 16. ¿Son todas las excepciones no detectadas fatales en PHP?
- 17. ¿Cómo puedo descargar todas las variables de PHP en el ámbito actual?
- 18. IOS - manejador de excepciones global
- 19. las variables Constructor-locales en Scala
- 20. ¿Debería detectar todas las excepciones?
- 21. volcar todas las tablas de mysql en archivos separados automágicamente?
- 22. Captura de todas las excepciones en Python
- 23. ¿Es posible enumerar todas las variables globales en PHP?
- 24. sincronizados y locales copias de las variables
- 25. Volcar todas las propiedades definidas en el script Ant
- 26. Las variables locales en las definiciones de clase/ámbito
- 27. Variables locales en java
- 28. Cómo rastrear todas las variables locales cuando se produce una excepción
- 29. ¿Cómo declarar las "variables" locales como finales en Objective-C?
- 30. capturar todas las excepciones en un controlador de rieles
eso es correcto, sin embargo, es bueno tener en cuenta que esto no será exactamente el código de gestión de excepciones. Tendría que ser responsable de proporcionar estos a la excepción al lanzar la excepción. Dicho esto, no sé de ninguna manera que pueda lograr lo mismo en la gestión de excepciones. – Slavic