2009-10-16 6 views
1

J'essaie d'obtenir des erreurs retournées au format JSON. Donc, j'ai fait un niveau de classe var:PHP Toujours exécuter la fonction

public $errors = Array(); 

Ainsi, plus bas dans le script, différentes fonctions peuvent retourner une erreur, et ajouter leur erreur au tableau des erreurs $. Mais, je dois utiliser le retour; dans certains endroits pour arrêter le script après qu'une erreur se produit.

Alors, quand je fais ça, comment puis-je courir toujours ma dernière fonction d'erreur qui renverra toutes les erreurs recueillies? Comment puis-je contourner la question d'avoir à arrêter le script, mais toujours vouloir retourner les erreurs pour lesquelles j'ai dû arrêter le script ?!

Répondre

0

Si vous utilisez votre classe + PHP5 peut avoir une méthode destructor:

public function __destruct() { 
    die(var_dump($this->errors)); 
} 
1

squelette os vraiment nu:

$errors = array(); 

function add_error($message, $die = false) { 
    global $errors; 
    $errors[] = $message; 
    if ($die) { 
    die(implode("\n", $errors)); 
    } 
} 
0
  1. Ajouter les erreurs au courant $_SESSION
  2. Ajouter les dernières erreurs à tout type de cache, XML ou un stockage

Si le code 'arrête':

// le code se produit erreur

die(print_r($errors));

0

Vous pouvez utiliser une astuce impliquant do {}.

do { 
    if(something) { 
     // add error 
    } 
    if(something_else) { 
     // add error 
     break; 
    } 
    if(something) { 
     // add error 
    } 
}while(0); 

// check/print errors 

Avis pause, vous pouvez l'utiliser pour sortir de la ne portée à tout moment, après quoi vous avez la dernière logique de retour d'erreur. Ou vous pouvez juste ce qui est à l'intérieur do {} dans une fonction, et utilisez retour au lieu de pause, ce qui serait encore mieux. Ou oui, encore mieux, une classe avec un destructeur.

Questions connexes