<?
echo "Un";
echo "Deux";
exit;
echo "Trois";
echo "Quatre";
?>
Il affichera juste un et deux. Trois et quatre resteront ignorés.
L'exit est encore plus brusque que ça : il arrête carrément le chargement de la page HTML : Dans l'exemple qui suit, il y aura juste Un et Deux qui seront affichés, POINT ! Le code HTML restera ignoré !!!
<html>
<head></head>
<body>
<?
echo "Un";
echo "Deux";
exit;
echo "Trois";
echo "Quatre";
?>
<H3> Bête code HTML </H3>
<?
echo "cinq";
?>
</body>
<?
echo "six";
?>
</html>
Alors que sans l'exit, tout aurait été affiché, même le Six !
il est possible d'afficher un texte qui marque la fin de l'exécution :
<?
echo "Un";
echo "Deux";
exit ("On s'arrête là
!");
echo "Trois";
echo "Quatre";
?>
Imaginons le code étrange suivant :
echo "Un";
echo "Deux";
("Banane" == "Banane") or
exit ("On s'arrête");
echo "Trois";
Donc, il y a une condition Banane égale banane ou alors on sort ! Débile, comme truc ... Pas tant que ça !
En fait si une des deux conditions est juste, l'autre n'est même pas regardée. Elle est snobée par PHP. Donc ici, comme Banane = Banane, OK, pas besoin d'aller lire exit ("On s'arrête"). Et puisque il ne le lit pas, il ne s'arrête pas !
Donc là il va afficher Un, Deux et Trois.
Mais si on écrit :
("Banane" == "Orange") or exit ("On s'arrête");
Banane n'est pas égal à Orange... Bon, PHP va alors aller vérifier si de l'autre côté du Or la proposition est considérée comme vraie... Oui, parce que pour l'opérateur or, il suffit que l'une des deux propositions soit vraie pour que le or soit vrai. Et, c'est ici que c'est génial : Le simple fait de lire l'exit fait sortir du programme !
Bon, c'est quoi l'utilité de ce truc ?
Eh bien, imaginons que nous essayons d'ouvrir un fichier avec la fonction fopen,
comme on a vu dans le chapitre
sur les fichiers :
$MonFichier = fopen("FichierInexistant.txt","r");
//lecture
On essaie donc d'ouvrir un fichier qui n'existe pas. Que contient alors $MonFichier
? Rien..., donc :
$MonFichier = fopen("FichierInexistant","r")
or exit("Ce fichier n'existe pas !");
La partie en bleu va renvoyer 0, et donc, la partie de droite va être évaluée pour voir si elle est aussi égale à 0 : Et on s'en fout de ce que vaut la partie droite, puisque sa simple évaluation implique son exécution, et son exécution arrête le programme... Vous avez compris ?.
Et encore une chose : Telle quelle, cette ligne ne marche pas car comme la
partie bleue renvoie une erreur PHP, il va s'arrêter de lui même
immédiatement pour indiquer que le fichier n'existe pas avec ses mots
à lui :
Warning: fopen("FichierInexistant", "r") - No such file
or directory in machinbidule.php on line 6
Et nous, on ne veut pas de son message d'erreur. Il faut alors lui dire qu'avant
d'afficher ses erreurs, il termine d'évaluer le or. Pour ce faire, on
ajoute @ au début de la
ligne, comme ceci :
@$MonFichier
= fopen("FichierInexistant","r")
or exit("Ce fichier n'existe pas !");
---