W3docs

die()

La fonction die() en PHP affiche un message et interrompt l'exécution du script en cours. Elle est identique à la fonction exit().

Ce que fait la fonction die()

La fonction die() arrête le script PHP à l'endroit même où elle est appelée. Rien de ce qui suit ne s'exécute — aucune instruction supplémentaire, aucune sortie ultérieure, aucune boucle restante. Elle peut également afficher un message (ou retourner un code de statut) au moment où elle stoppe l'exécution.

die() est un alias de exit() : les deux sont interchangeables octet pour octet, acceptent le même argument et se comportent de manière identique. PHP conserve les deux noms car die se lit naturellement dans du code de type "arrêt sur erreur" (... or die(...)) tandis qu'exit se lit naturellement lorsqu'on souhaite simplement terminer un script. Utilisez celui qui rend le code environnant le plus lisible ; cette page utilise die() tout au long.

Syntaxe

die(string $message = "")
die(int $status = 0)

die() accepte un argument optionnel, et ce que vous passez modifie son comportement :

  • Une string — PHP affiche cette string, puis se termine. C'est le cas d'utilisation le plus courant.
  • Un entier — PHP se termine avec cette valeur comme statut de sortie et n'affiche rien. 0 signifie le succès ; 1254 signalent une erreur au shell. Cela n'a d'importance que pour les scripts en ligne de commande (php script.php), où un autre programme lit $? pour savoir si votre script a réussi.
  • Rien — le script se termine simplement, sans sortie et avec un statut de sortie de 0.

die() est une construction du langage, pas une fonction ordinaire, donc les parenthèses sont optionnelles (die; est valide). Les inclure maintient la cohérence du code avec les appels de fonctions normales.

Arrêter un script sur une condition échouée

L'utilisation la plus fréquente de die() est d'interrompre l'exécution dès qu'un problème est détecté, afin que le reste du script ne s'exécute jamais avec des données incorrectes :

php— editable, runs on the server

Comme $name n'est pas "Jane", le corps du if s'exécute, die() affiche Access denied!, et le script se termine immédiatement — la ligne echo n'est jamais atteinte. Si $name était "Jane", die() serait ignoré et le script afficherait Welcome, Jane! à la place.

L'idiome "or die()"

die() est souvent enchaîné à une expression avec or. PHP évalue d'abord le côté gauche ; ce n'est que s'il est falsy (comme false ou null) qu'il continue et exécute die(). C'est la façon classique de protéger une opération susceptible d'échouer :

<?php

$file = fopen("missing-config.txt", "r") or die("Could not open the config file.");

echo "File opened successfully.";

Si fopen() réussit, il retourne un descripteur de fichier (truthy), donc or die(...) n'est jamais atteint. Si le fichier est manquant, fopen() retourne false, die() s'exécute, et le script s'arrête avant le echo.

Cet idiome est concis, mais dans le code moderne, préférez une vraie gestion des erreurs — lever une exception ou journaliser via error_log() — afin que les échecs puissent être capturés et signalés plutôt que de tuer abruptement la requête. Consultez trigger_error() et la gestion des erreurs pour des alternatives plus propres.

Statut de sortie pour les scripts en ligne de commande

Lorsque vous exécutez PHP depuis le terminal, le statut de sortie indique au shell ou au pipeline CI si le script a fonctionné :

<?php

$ok = false;

if (!$ok) {
  fwrite(STDERR, "Job failed\n"); // write the message yourself...
  die(1);                         // ...then exit with a non-zero status
}

die(0); // success

Passer un entier à die() définit le statut mais n'affiche rien, donc écrivez vous-même tout message lisible par un humain (ici dans STDERR) avant de quitter. Un script environnant peut ensuite vérifier $? et réagir au 1.

Points d'attention

  • die() ne saute aucun nettoyage enregistré avec register_shutdown_function() — les callbacks d'arrêt et les destructeurs d'objets s'exécutent quand même. Mais le code écrit après l'appel à die() ne s'exécute jamais.
  • Dans une requête web, die() met fin à toute la réponse. La sortie déjà envoyée au navigateur reste ; tout ce qui est mis en file d'attente après l'appel est abandonné. Évitez-le dans les fonctions destinées à être réutilisables — retournez une valeur ou levez une exception à la place.
  • Un argument entier n'affiche rien. die(1) n'affiche pas 1 ; si vous voulez que l'utilisateur voie un message, passez une string ou affichez-le avant d'appeler die().
  • Préférez les exceptions dans le code applicatif. die() ne peut pas être intercepté, testé facilement ou récupéré. Réservez-le aux scripts de premier niveau et aux diagnostics rapides.

Conclusion

die() (et son jumeau exit()) termine un script PHP sur place, en affichant optionnellement un message ou en définissant un statut de sortie. Il excelle pour les gardes rapides dans les scripts autonomes et en ligne de commande, mais pour la logique applicative en production, privilégiez les exceptions et une gestion des erreurs appropriée afin que les échecs restent attrapables. Pour aller plus loin sur l'écriture et la structuration du code qui l'utilise, consultez les fonctions PHP.

Pratique

Pratique
Quelle est la fonction de 'die()' en PHP ?
Quelle est la fonction de 'die()' en PHP ?
Was this page helpful?