104 votes

Comment « faire quelque chose ou DIE() » fonctionne en PHP ?

Je vous écris une application php pour accéder à une base de données MySQL, et sur un tutoriel, il est dit quelque chose de la forme

Comment PHP sait que la fonction a échoué pour qu’il fonctionne la partie die ? Je suppose que j’ai demande comment fonctionne la partie « ou » de celui-ci. Je ne pense pas que je l’ai vu avant.

139voto

nickf Points 185423

Si la première instruction retourne , puis l’instruction entière doit être donc la deuxième partie n’est jamais exécutée.

Par exemple :

Par conséquent, si votre requête est rejetée, elle évaluera la `` déclaration et à la fin du script.

35voto

Artelius Points 25772

PHP or fonctionne comme C || (qui, incidemment, est également pris en charge par PHP - or a juste l'air plus agréable et dispose de différents priorité de l'opérateur - voir cette page).

Il est connu comme un court-circuit de l'opérateur car il permettra de sauter d'une évaluation une fois qu'il a suffisamment d'informations pour décider de la valeur finale.

Dans votre exemple, si mysql_connect() renvoie TRUE, PHP sait déjà que l'ensemble de la déclaration d'évaluer VRAI, n'importe quel die() evalutes, et par conséquent die() n'est pas évaluée.

Si mysql_connect() renvoie la valeur FALSE, PHP n'est pas de savoir si l'ensemble de la déclaration d'évaluer à TRUE ou à FALSE et il va sur et tente de evalute die() - fin du script dans le processus.

C'est juste un beau truc qui prend le parti de la façon dont or travaux.

11voto

MarkR Points 37178

Il fonctionne comme d’autres ont décrit.

En PHP, n’utilisez pas « mourir », car elle ne déclenche pas d’exception (comme il le fait en Perl). Au lieu de cela lève une exception correctement de façon normale.

Die ne peuvent pas être intercepté dans PHP et ne se connecte pas - au contraire, il imprime le message soudainement et quitte immédiatement le script sans n’importe qui dire n’importe quoi ou en vous donnant la possibilité d’enregistrer l’événement, nouvelle tentative etc..

-1voto

Arun Kumar Points 21
$con=mysql_connect($host, $user, $pass)
if(!$con)
{
     die("could not connect");
}
else
{
     echo "Connected";
}

-4voto

jbuzzard Points 11

en ce qui concerne omettant « soudainement » :

évidemment, comme une simple preuve de concept.

aucune ? (ne pas dire quelque chose sur ne pas dégrader dans des navigateurs w/o js. Si vous avez un ordinateur aujourd'hui, il devrait avoir js activé.)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X