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

quelles sont les différences entre les fonctions die() et exit() 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... quel est-il?

601
demandé sur Rahul Meshram 2009-11-25 09:28:07

17 réponses

Il n'y a pas de différence, ils sont les mêmes.

PHP manuel pour exit :

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

PHP manuel pour die :

cette construction linguistique est équivalente à exit() .

490
répondu Marek Karbarz 2009-11-25 06:30:16

DIFFÉRENCE D'ORIGINE

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


ÉQUIVALENT FONCTIONNEL

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

manuel PHP

PHP manuel pour die :

cette construction linguistique est équivalente à exit() .

PHP manuel pour exit :

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

Manuel PHP pour Liste des fonctions Alias :

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


DIFFERENT IN OTHER LANGUAGES

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

à Partir de Encore un autre PHP coup de gueule :

... en tant que codeur C et Perl, j'étais prêt à répondre, " Pourquoi, exit() just bails hors du programme avec un statut de sortie numérique, tandis que die() imprime le message d'erreur à stderr et sorties avec L'état EXIT_FAILURE."Mais alors Je me suis souvenu que nous sommes dans le désordre-syntaxe-land de PHP.

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

Les concepteurs de toute évidence de la pensée "Hmm, emprunter exit() de C . Et Perl les gens aimeront probablement si nous prenons mourir () comme est de Perl aussi. Oops! Nous avons deux fonctions quitter maintenant! Nous allons faire en sorte qu'ils 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 de confusion. Les codeurs C et Perl continueront d'utiliser exit () pour lancer une valeur de sortie entière seulement, et die() pour lancer un message d'erreur et de sortie avec un échec. Les débutants et PHP-comme-un-premier-langue des gens va probablement se demander "euh, deux fonctions quitter, lequel devrais-je utilisez?"Le manuel n'explique pas pourquoi il y exit() et die().

en général, PHP a beaucoup de redondance étrange comme ceci - il essaie de soyez amical avec les gens qui viennent d'horizons linguistiques différents, mais ce faisant, cela crée une redondance déroutante.

185
répondu Geoffrey Hale 2015-04-30 23:56:14

comme indiqué précédemment, ces deux commandes produisent le même Parser token.

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 s'il s'agit d'une longue liste de fonctions commençant par" d", et une liste plus courte commençant par" e", alors il doit y avoir une pénalité de temps à chercher le nom de la fonction pour les fonctions commençant par"e". Et il peut y avoir autres différences dues à la façon dont le nom entier de la fonction est vérifié.

je doute qu'il soit mesurable à moins que vous ayez 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
répondu Bob 2014-01-13 09:40:10

manuel PHP sur mourir :

die-équivalent à exit

vous pouvez même faire die; de la même manière que exit; - avec ou sans parens.

le seul avantage de choisir die() plutôt que exit() , pourrait être le temps que vous consacrez à taper une lettre supplémentaire ;-)

38
répondu Levit 2017-10-20 16:29:24

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

Bien que j'ai un convention que lorsque je veux mettre fin à l'exécution d'un script lorsqu'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 (ne pouvait pas se connecter à la base de données, ne peut pas écrire au 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 die:

$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 certain point dans mon code, je sais qu'à ce point je veux sortir parce que la logique s'arrête 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 si vous travaillez sur un projet seul. Quand il ya plus de gens personne ne les empêchera d'utiliser die ou exit lorsque cela ne correspond pas à mes conventions...

25
répondu Lukas 2015-07-15 14:00:10

Cette page dit die est un mensonges de exit , de sorte qu'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 pour une autre raison et les anciens noms ne sont conservés que comme des alias pour rétrocompatibilité. C'est généralement une mauvaise idée d'utiliser ce genre d'alias, car ils peuvent être liés à l'obsolescence ou au changement de nom, ce qui conduira à des scripts impossibles à rapporter.

donc, appelez-moi paranoïaque, mais il n'y aura peut-être pas de die dans le futur.

9
répondu Pedram Behroozi 2014-04-22 04:20:34

ils sont essentiellement les mêmes, bien que cet article suggère le contraire.

6
répondu o.k.w 2009-11-25 06:32:52

cette sortie de https://3v4l.org démontre que la matrice et la sortie sont fonctionnellement identiques. enter image description here

5
répondu Simon77 2017-06-12 08:58:25

voici quelque chose qui est assez intéressant. Bien que exit() et die() soient équivalents, exit() ferme la connexion. die() ne ferme pas la connexion.

exit() :

<?php
    header('HTTP/1.1 304 Not Modified');
    exit();
?>

die() :

<?php
    header('HTTP/1.1 304 Not Modified');
    die();
?>

résultats:

exit() :

HTTP/1.1 304 Not Modified 
Connection: Keep-Alive 
Keep-Alive: timeout=5, max=100

die() :

HTTP/1.1 304 Not Modified 
Connection: close

juste incase dans le besoin de tenir compte de cela pour votre projet.

crédits: https://stackoverflow.com/a/20932511/4357238

2
répondu Edward 2018-07-12 04:36:14

en utilisant la ligne de commande,

 die("Error");

s'affichera" Error " à STDOUT et s'affichera avec le code d'erreur 0.

si vous voulez sortir avec le code d'erreur 1, vous devez:

  fwrite(STDERR, "Error");
    exit(1);

cela peut être utile lors de l'exécution de scripts php à partir de scripts en ligne de commande ou shell et vous voulez voir si le script s'est terminé avec un code de sortie non nul. copie de la réponse de charanjeet de Quora

1
répondu prabhjot 2017-07-03 07:39:54

essayez de regarder sur ces questions: lien Il y a une petite différence entre die() et exit() die () fermera la connexion D'Apache ou ce que vous utilisez pour votre serveur, et exit () not

0
répondu Dhiva Banyu Wigara 2018-05-16 00:56:55

de ce que je sais quand je regarde cette question ici

Il dit que "en PHP, il existe une différence distincte dans l'en-Tête de sortie. Dans les exemples ci-dessous, j'ai choisi d'utiliser un en-tête différent mais pour montrer la différence entre exit () et die () qui n'a pas d'importance", et testé (personnellement)

0
répondu Dhiva Banyu Wigara 2018-07-31 04:54:58

Fonctionnellement, ils sont identiques. Donc, choisir qui utiliser est totalement une préférence personnelle. Sémantiquement, en anglais, ils sont différents. Die sonne négatif. Quand j'ai une fonction qui renvoie des données JSON au client et termine le programme, cela peut être terrible si j'appelle cette fonction jsonDie(), et il est plus approprié de l'appeler jsonExit(). Pour cette raison, j'utilise toujours exit au lieu de die.

-1
répondu Luo Jiong Hui 2017-03-01 19:48:20

le résultat de la fonction exit() et de la fonction die() est toujours le même. Mais comme expliqué dans la page de manuel d'alias ( http://php.net/manual/en/aliases.php ), il est dit que la fonction die() appelle la fonction exit. Je pense qu'il est codé dur comme ci-dessous:

function die($msg){
  exit($msg);
}

ce n'est pas une question de performance pour les petits, moyens et grands projets, mais si le projet a milliards multiplier milliards de processus, cela arrive performance très importante l'optimisation de l'état.

mais la plupart des gens ne pensent pas que c'est un problème, parce que si vous avez autant de processus, vous devez penser plus de problème que si une fonction est maître ou alias.

Mais, la réponse exacte est que; toujours maître de la fonction est plus rapide que d'alias.

enfin; Alias manual page dit que, vous ne pouvez plus utiliser die. Il n'est qu'un alias, et c'est déconseillé.

C'est généralement une mauvaise idée d'utiliser ce genre d'alias, car ils peuvent être lié à l'obsolescence ou au changement de nom, ce qui conduira à un script. Cette liste est fournie pour aider ceux qui veulent améliorer leur de vieux scripts à une nouvelle syntaxe.

-1
répondu MERT DOĞAN 2018-01-17 15:56:00

Dans w3schools Quiz: Les fonctions die() et exit() font exactement la même chose? ma réponse est fausse. C'est la mauvaise réponse. La bonne réponse est vrai.

, Voici la capture d'écran: enter image description here

-3
répondu li bing zhao 2017-04-04 19:40:03

quelque chose que j'ai remarqué dans mes scripts au moins est que exit() arrêtera le script en cours d'exécution et passera le contrôle de nouveau à n'importe quel script appelant, tandis que die arrêtera php dans ses pistes. Je dirais que c'est tout à fait une grande différence?

-3
répondu noowie 2017-07-27 13:48:13

ils sonnent à peu près pareil, cependant, la sortie() vous permet également de définir le code de sortie de votre script PHP.

habituellement, vous n'avez pas vraiment besoin de cela, mais lorsque vous écrivez des scripts PHP de console, vous pourriez vouloir vérifier avec par exemple Bash si le script a tout terminé de la bonne manière.

alors vous pouvez utiliser exit() et attraper cela plus tard. Die () ne supporte cependant pas cela.

Die () existe toujours avec le code 0. Si essentiellement une commande die () fait ce qui suit:

<?php
echo "I am going to die";
exit(0);
?>

qui est le même que:

<?php
die("I am going to die");
?>
-8
répondu Icheb 2009-11-25 08:19:20