J'écris une application php pour accéder à une base de données MySQL, et sur un tutoriel, cela dit quelque chose de la forme
mysql_connect($host, $user, $pass) or die("could not connect");
Comment PHP sait-il que la fonction a échoué pour exécuter la partie die? Je suppose que je demande comment fonctionne la partie «ou». Je ne pense pas l'avoir vu auparavant.
php
mysql
exception-handling
conditional
chustar
la source
la source
Réponses:
Si la première instruction retourne
true
, alors l'instruction entière doit êtretrue
donc la seconde partie n'est jamais exécutée.Par exemple:
Par conséquent, si votre requête échoue, elle évaluera l'
die()
instruction et terminera le script.la source
with
déclaration de python , alors qu'il ne s'agit en fait que d'une expression booléenne ... Je pense que des précautions supplémentaires doivent être prises lors de l'utilisation de cette expression si vous êtes censé effectuer un nettoyage en cas de les erreurs. S'il vous plaît, corrigez-moi si je me trompe, mais si vous le faitesfunc_call($file) or die();
et que la fonction échoue, le fichier est laissé ouvert lorsque les scripts meurent.or
dans des situations où unif
pourrait fonctionner?PHP
or
fonctionne comme celui de C||
(qui est d'ailleurs également pris en charge par PHP -or
semble juste plus joli et a une priorité d'opérateur différente - voir cette page ).Il est connu comme un opérateur de court-circuit car il ignorera toutes les évaluations une fois qu'il aura suffisamment d'informations pour décider de la valeur finale.
Dans votre exemple, si
mysql_connect()
renvoie VRAI, alors PHP sait déjà que l'instruction entière sera évaluée à VRAI quelle que soit la valeurdie()
évaluée, et par conséquentdie()
n'est pas évaluée.Si
mysql_connect()
retourne FALSE, PHP ne sait pas si l'instruction entière sera évaluée à TRUE ou FALSE donc il continue et essaie d'évaluerdie()
- mettant fin au script dans le processus.C'est juste une belle astuce qui profite de la façon dont
or
fonctionne.la source
Cela fonctionne comme d'autres l'ont décrit.
En PHP, n'utilisez pas "die", car il ne lève PAS d'exception (comme c'est le cas en Perl). Au lieu de cela, lancez une exception correctement de la manière normale.
die ne peut pas être attrapé en PHP et ne se connecte pas - au lieu de cela, il imprime le message sans grâce et quitte immédiatement le script sans rien dire à personne ni vous donner la possibilité d'enregistrer l'événement, réessayer, etc.
la source
la source