Question Quelles sont les différences entre die () et exit () en PHP?


Quelles sont les différences entre die() et exit() fonctions dans PHP?

Je pense que les deux ont la même fonctionnalité, mais je doute qu'il y ait quelque chose de différent dans les deux ... qu'est-ce que c'est?


596
2017-11-25 06:28


origine


Réponses:


Il n'y a pas de différence - ils sont identiques.

Manuel PHP pour exit:

Note: Cette construction de langage est équivalente à die().

Manuel PHP pour die:

Cette construction de langage est équivalente à exit().


485
2017-11-25 06:30



DIFFÉRENCE D'ORIGINE

La différence entre die() et exit() en PHP est leur origine.


ÉQUIVALENT FONCTIONNELLEMENT

die() et exit() sont fonctions équivalentes.

Manuel PHP

Manuel PHP pour die:

Cette construction de langage est équivalente à exit().

Manuel PHP pour exit:

Note: Cette construction de langage est équivalente à die().

Manuel PHP pour Liste des alias de fonction:

die est un alias pour la fonction maître exit()


DIFFÉRENT DANS D'AUTRES LANGUES

die() et exit() sont différent dans d'autres langues mais en PHP ils sont identiques.

De Encore une autre diatribe PHP:

... En tant que codeur C et Perl, j'étais prêt à répondre, "Pourquoi, exit () juste des balles   hors du programme avec un statut de sortie numérique, tandis que die () affiche le   message d'erreur à stderr et quitte avec le statut EXIT_FAILURE. "Mais alors   Je me suis souvenu que nous sommes dans la confusion-syntaxe-terre de PHP.

En PHP, exit () et die () sont identiques.

Les concepteurs ont évidemment pensé "Hmm, empruntons exit () de C. Et Perl   les gens vont probablement l'aimer si nous prenons die () comme de Perl aussi.   Oops! Nous avons deux fonctions de sortie maintenant! Faisons en sorte qu'ils ont tous les deux   peut prendre une chaîne ou un entier comme argument et les rendre identiques! "

Le résultat final est que cela n'a pas vraiment rendu les choses "plus faciles",   juste plus confus. Les codeurs C et Perl continueront à utiliser exit () pour   lancer une valeur de sortie entière et die () pour lancer un message d'erreur   et quittez avec un échec. Débutants et PHP en tant que première langue   va probablement se demander "umm, deux fonctions de sortie, dont on devrait   utiliser? "Le manuel n'explique pas pourquoi il y a exit () et die ().

En général, PHP a beaucoup de redondance bizarre comme ça - il essaie de   être amical avec les gens qui viennent d'horizons linguistiques différents,   mais ce faisant, cela crée une redondance confuse.


177
2018-01-08 23:13



Comme indiqué précédemment, ces deux commandes produisent le même jeton d'analyseur.

MAIS

Il y a une petite différence, et c'est le temps qu'il faut à l'analyseur pour retourner le jeton.

Je n'ai pas étudié l'analyseur PHP, mais si c'est une longue liste de fonctions commençant par "d" et une liste plus courte commençant par "e", il doit y avoir une pénalité de temps pour chercher le nom de la fonction commençant par " e ". Et il peut y avoir d'autres différences dues à la façon dont le nom de la fonction entière est vérifiée.

Je doute qu'il soit mesurable à moins d'avoir un environnement "parfait" dédié à l'analyse php, et beaucoup de requêtes avec des paramètres différents. Mais il doit y avoir une différence, après tout, PHP est un langage interprété.


50
2017-11-01 15:17



Manuel PHP sur mourir:

die - Equivalent à quitter

Vous pouvez même faire die; la même façon que exit; - avec ou sans parens.

Le seul avantage de choisir die() plus de exit(), peut être le temps que vous passez à taper une lettre supplémentaire ;-)


35
2018-02-19 14:17



Comme le disent toutes les autres bonnes réponses, die et exit sont identiques / alias.

Bien que j'ai une convention personnelle que quand je veux mettre fin à l'exécution d'un script quand il est attendu et désiré, j'utilise exit;. Et quand j'ai besoin de mettre fin à l'exécution en raison de certains problèmes (impossible de se connecter à db, impossible d'écrire dans un fichier, etc.), j'utilise die("Something went wrong."); pour "tuer" le script.

Quand j'utilise exit:

header( "Location: http://www.example.com/" ); /* Redirect browser */
/* Make sure that code below does not get executed when we redirect. */
exit; // I would like to end now.

Quand j'utilise mourir:

$data = file_get_contents( "file.txt" );
if( $data === false ) {
    die( "Failure." ); // I don't want to end, but I can't continue. Die, script! Die!
}
do_something_important( $data );

De cette façon, quand je vois exit à un moment donné dans mon code, je sais que je veux quitter à ce stade parce que la logique se termine ici. Quand je vois die, Je sais que je voudrais continuer l'exécution, mais je ne peux pas ou ne devrais pas en raison d'une erreur dans l'exécution précédente.

Bien sûr, cela ne fonctionne que lorsque vous travaillez sur un projet seul. Quand il y a plus de gens, personne ne les empêchera d'utiliser die ou exit où ça ne correspond pas à mes conventions ...


25
2017-07-15 14:00



Cette page dit die est un alies de exit, donc ils sont identiques. Mais explique aussi que:

il y a des fonctions qui ont changé de nom à cause d'un nettoyage de l'API ou d'une autre raison et les anciens noms ne sont conservés que sous la forme d'alias pour des raisons de compatibilité descendante. Il est généralement une mauvaise idée d'utiliser ce type d'alias, car ils peuvent être liés à l'obsolescence ou au renommage, ce qui entraînera un script non portable.

Alors, appelez-moi paranoïaque, mais il n'y a peut-être pas diedans le futur.


9
2018-04-22 04:20



Ils sont essentiellement les mêmes, bien que cette article suggérer autrement.


6
2017-11-25 06:32