Sto cercando un metodo per fare in modo che il gestore di eccezioni esegua il dump delle variabili locali della funzione in cui è stata generata l'eccezione. È possibile?PHP: Come scaricare tutte le variabili locali in un gestore di eccezioni
risposta
get_defined_vars()
restituirà un array di tutte le variabili definite. È quindi possibile eseguire il ciclo di ciascuna di esse e scaricare il contenuto oppure utilizzare var_dump(get_defined_vars())
per scaricarle in blocco.
Prova var_dump(get_defined_vars());
. Questo dovrebbe scaricare tutte le variabili definite nell'ambito.
È possibile avere tutti definiti (anche predefiniti) chiamando la funzione get_defined_vars.
Solo le variabili locali (ambito della funzione corrente) non sono disponibili senza alcuni strumenti di debug.
Penso che sia meglio impostare xDebug.
Scarica automaticamente tutti gli ambienti.
E otterrete ogni volta qualcosa di simile:
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*
Si rende incredibilmente facile debug.
Il gestore di eccezioni non avrà mai accesso alle variabili locali della funzione che l'eccezione ha generato poiché tali variabili sono locali. Non penso che ci sia un modo per ottenere l'accesso alla tabella delle variabili di uno specifico frame dello stack dal codice PHP di userland.
È possibile eseguire questa operazione utilizzando xdebug come debugger di passaggi. Con i punti di interruzione (ad esempio nel gestore delle eccezioni) è possibile esaminare ogni frame dello stack.
Accanto a passo il debug, ci sono anche alcune opzioni di visualizzazione si potrebbe desiderare di fare uso di, come:
si ha accesso a variabili locali, se l'eccezione sarà catturato nello stesso scopo/funzione viene generato:
<?php
try
{
$var = 123;
throw new Exception();
}
catch (Exception $e)
{
var_dump($var); // int(123)
}
?>
- 1. accesso tutte le variabili locali
- 2. Come posso scaricare tutte le variabili PHP nell'ambito corrente?
- 3. Come ottenere un dump di tutte le variabili locali?
- 4. Un gestore di eccezioni per tutte le eccezioni di una classe
- 5. Come intercettare tutte le eccezioni nel pallone?
- 6. Rendi globali tutte le variabili, PHP
- 7. Fa [=] implica che tutte le variabili locali saranno copiate?
- 8. Come ottengo tutte le variabili definite in un modello Django?
- 9. Tutte le eccezioni non rilevate sono fatali in PHP?
- 10. Acquisizione di tutte le eccezioni in Python
- 11. script bash leggere le variabili di file in variabili locali
- 12. Le variabili globali e locali in R
- 13. PHP ha bisogno di tagliare tutte le variabili $ _POST
- 14. Global javascript gestore di eccezioni (in Chrome)
- 15. C'è un modo per avere tutte le variabili locali allineate in Eclipse?
- 16. Annulla l'impostazione di tutte le variabili nello script PHP
- 17. PHP: Come ottenere il nome di tutte le variabili in php post method
- 18. Eccezioni Delphi che non mi permettono di vedere le variabili locali
- 19. Come posso dire a PHP di scaricare le eccezioni come testo non elaborato anziché HTML?
- 20. Elenco di tutte le filiali locali senza un telefono
- 21. Elenco di tutte le variabili in un file in bash
- 22. Elenco di tutte le possibili eccezioni di SoapServer
- 23. Come impostare "Interrompi tutte le eccezioni", da un pacchetto
- 24. Come catturare le eccezioni in modo condizionale?
- 25. Looping attraverso tutte le sessioni di un server in PHP
- 26. Cattura tutte le eccezioni in un controller rotaie
- 27. Blocchi, loops e le variabili locali
- 28. Come gestisce le variabili PHP?
- 29. sicurezza Discussione e le variabili locali
- 30. Ottieni tutte le variabili Javascript?
Questo è corretto, tuttavia è bene notare che questo non sarà esattamente il codice di gestione delle eccezioni. Dovresti essere resopnsible per fornire questi all'eccezione durante il lancio dell'eccezione. Detto questo, non conosco alcun modo per ottenere lo stesso risultato nella gestione delle eccezioni. – Slavic