J'ai beaucoup vu cela: $fp = fopen($filepath, "w") or die();
Mais je n'arrive pas à trouver de vraie documentation sur cette syntaxe "ou". C'est assez évident ce qu'il fait, mais puis-je l'utiliser n'importe où? Et doit-il être suivi de die()
? Y a-t-il des mises en garde à utiliser or
quand vous pourriez utiliser quelque chose comme
if (file_exists($filepath))
$fp = fopen($filepath,"r");
else
myErrMessage();
Je sais que cela semble être une question stupide, mais je ne trouve pas de règles strictes pour cela. Merci.
C'est un opérateur logique et peut être utilisé dans n'importe quelle expression logique.
Disons simplement que:
$result = first() || second();
évaluera:
if (first()) {
$result = true;
} elseif (second()) {
$result = true;
} else {
$result = false;
}
tandis que:
$result = first() or second();
évaluera:
if ($result = first()) {
// nothing
} else {
second();
}
En d'autres termes, vous pouvez envisager:
$result = first() || second();
$result = (first() || second());
et:
$result = first() or second();
être:
($result = first()) || second();
C'est juste une question de priorité.
C'est une astuce intéressante, héritée de certains prédécesseurs PHP, basés sur le fait que PHP n'évaluera pas intelligemment une expression après OR, si la première est retournée) vrai:
function a($ret){
echo "FOO";
return $ret;
}
function b($ret){
echo "BAR";
return $ret;
}
$result = (a(true) OR b(true));
affichera uniquement FOO
, ce qui signifie b() n'a même pas été exécuté.
or
fait juste une comparaison booléenne .
Ce qui est retourné par fopen()
peut être traité comme une telle valeur booléenne, car il retourne FALSE
s'il échoue (et une valeur différente si ce n'est pas le cas).
S'il échoue, l'instruction est évaluée à droite et la fonction die()
est donc appelée.
Fondamentalement, cela signifie "si la première commande échoue, exécutez la deuxième commande". Dans votre exemple, si PHP ne peut pas ouvrir le fichier, il terminera le script (die()
).
'Ou' dans PHP est comme la syntaxe de type C (||)
<?php
if( ($a==1 || $a==2) && ($b==3 || $b==4) && ($c==5 || $c==6) ) {
//do that something here.
}
?>
Le `` Ou '' dont vous parlez n'est qu'un truc comme l'indique le texte suivant:
Exemple:
$result = mysql_query('SELECT foo FROM bar', $db) or die('Query failed: ' . mysql_error($db));
L'astuce or die () est un très mauvais choix pour plusieurs raisons:
Vous ne pouvez pas contrôler si elle doit être sortie à l'écran ou non. C'est correct de le faire dans un environnement de développement, mais certainement pas dans un environnement de production.
5. Il vous empêche de faire toute sorte de nettoyage. Il termine simplement le script brusquement.
Référence: [entrez la description du lien ici] [1]
[1]: http://www.phpfreaks.com/blog/or-die-must-dieenter code here
Il peut être utilisé comme vous le feriez || comme un OR http://php.net/manual/en/language.operators.logical.php
Il peut être utilisé comme ||
mais n'a pas la même priorité: http://www.php.net/manual/en/language.operators.precedence.php
La priorité d'un opérateur spécifie comment "étroitement" il lie deux expressions ensemble. Par exemple, dans l'expression 1 + 5 * 3, la réponse est 16 et non 18 car l'opérateur de multiplication ("*") a une priorité plus élevée que l'opérateur d'addition ("+"). Des parenthèses peuvent être utilisées pour forcer la priorité, si nécessaire. Par exemple: (1 + 5) * 3 correspond à 18.