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.
0signifie le succès ;1–254signalent 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 :
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); // successPasser 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é avecregister_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 pas1; si vous voulez que l'utilisateur voie un message, passez une string ou affichez-le avant d'appelerdie(). - 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.