mardi 22 juillet 2008

Affichage d'une exception

Petite fonction PHP pour afficher la description détaillée d'une exception. Contrairement à la fonction standard, elle ne tronque pas les arguments, ce qui est quand même plus pratique.

function displayException(Exception $e) {  
    echo '<pre>';
    echo "Caught exception:\n\n  " . get_class($e) . "\n\n";
    echo "Message:\n\n  " . $e->getMessage() . "\n\n";
    echo "Trace:\n\n";
    $trace = $e->getTrace();
    foreach ($trace as $index => $item) {
        echo "  #$index {$item['file']}({$item['line']}): ";
        if (isset($item['class'])) {
            echo "{$item['class']}->{$item['function']}";
        } else {
            echo $item['function']; 
        }
        echo '(';
        $argsAsText = array();
        foreach ($item['args'] as $arg) {
            switch (gettype($arg)) {
                    case 'array':
                  $argsAsText[] = str_replace("\n", '', print_r($arg, true));
                  break;
                 case 'string':
                  $argsAsText[] = '"' . $arg . '"';
                  break;
                
                 default:
                     $argsAsText[] = $arg;
                  break;
                }    
        }
        echo implode(', ', $argsAsText), ");\n";          
    }
    if (count($_POST) > 0) {
        echo "\nPOST:\n\n  " . str_replace("\n", "\n  ", print_r($_POST, true));
    }
    if (isset($_SESSION)) {
        echo "\nSESSION:\n\n  " . str_replace("\n", "\n  ", print_r($_SESSION, true));
    }
 exit();
}

Aucun commentaire: