83 votes

exit, exit (), exit (0), die (), die (0) - Comment quitter le script

Je crois que tous ces (et même die() ou die(0)) sont identiques. Si elles ne sont pas identiques, ce qui est préféré pour la sortie d'un script avec succès? Si elles sont identiques, est-il préféré standard pour indiquer le succès de la fin de script? J'ai tendance à utiliser exit;.

EDIT: Toutes les réponses ont "die() et exit() sont à l'identique" même si je dis que dans ma question. J'ai mis à jour le titre, nous l'espérons, pour la rendre plus claire que ce n'est PAS ma question. Je tiens à indiquer clairement le succès à partir d'un script de ligne de commande.

69voto

AgentConundrum Points 10107

Ce sont tous identiques. Je suis sûr que die() est juste un straight-up alias exit(), mais même si elle ne l'est pas, il s'agit toujours de la même manière.

Lors de l'une de ces fonctions est donné un argument de type chaîne, il imprime la chaîne avant de terminer le processus. Lorsqu'il rencontre un entier sous 255, cet entier est considéré comme le code de retour du processus, qui est passé le processus qui a invoqué le script PHP. Ceci est particulièrement utile lors de l'écriture d'applications en ligne de commande (PHP n'est pas uniquement sur le web!).

Aussi loin que la différence entre exit, exit(), et exit(0), il n'y a vraiment aucun. Il n'y a certainement pas de différence entre les deux premiers, car exit est techniquement une construction du langage, non pas une fonction, de sorte qu'il peut être appelé avec ou sans parenthèses, comme echo. Retourner un code d' 0 signifie "ce programme a été exécuté avec succès et sans erreurs", et si je ne sais pas exactement ce qui se passe lorsque vous ne passez pas un argument, PHP.net dit qu'un argument de moins exit indique la réussite, donc je serais prêt à parier qu'il retourne 0, bien qu'encore une fois PHP.net ne pas afficher une valeur par défaut pour l'argument.

6voto

nsanders Points 5282

Comme plusieurs personnes l'ont mentionné, die() et exit() sont exactement les mêmes.

Si vous regardez la documentation de PHP, il y a deux options pour les arguments:

  • Une valeur numérique. Ceci n'est utile que si vous utilisez PHP en ligne de commande, par opposition à un serveur web. Une valeur de zéro indique que le succès. Différent de zéro indique une condition d'erreur est survenue.

  • Une chaîne de valeur. Il sera affiché dans le navigateur lorsque la sortie se produit.

Au lieu de die() ou exit(), je vous recommande d'utiliser les exceptions et personnalisé de haut niveau gestionnaire d'exception pour gérer les conditions de défaillance.

Vous avez plus de souplesse que la façon de faire les choses telles que le réglage automatique de journalisation des erreurs. Aussi, si vous êtes à l'aide de PHP pour mettre en œuvre une API JSON, ce gestionnaire d'exception peut main valide, erreur indiquant JSON extrait de la place.

5voto

jjyepez Points 21

Je dirais qu'en ce qui concerne une meilleure sémantique die($arg); doivent être utilisés pour une utilisation anormale ou interruption inattendue, même quand -bien sûr, vous l'avez pris. Et exit($arg); doit être utilisé pour une normale (prévu / contrôlée) à la fin d'un processus, comme en break; d'un for ou while ou switch de leur structure, mais avec une fin définitive.

Néanmoins .. personnellement, j'utilise souvent un général if { } else { } de la structure de contrôle des différentes branches de l'immense processus ou le tampon de sortie afin de ne pas avoir à utiliser de "sortie" ..

J'utilise aussi die($arg) en simple erreur de la capture de la sémantique comme dans

$db = mysql_connect([$args]) or die ($error); ...

Qu'en pensez-vous? Espérons que cela aide.

Meilleures salutations,

jjyepez

1voto

slugonamission Points 5688

die(); n'est qu'un synonyme pour exit(); et est fonctionnellement identique.

La méthode standard consiste à utiliser le code de sortie zéro pour indiquer le succès et tout le reste pour indiquer une condition d'erreur.

1voto

xthexder Points 1260

die () est généralement utilisé pour tuer le script avec une sortie d'erreur:

 die("There was a fatal error");
 

where-as exit est généralement utilisé comme sortie réussie (au moins dans mon codage)

Le manuel PHP dit que les fonctions sont identiques.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X