可能有重复:
PHP - and / or keywords
我看到一些使用or
的PHP代码,这种用法我不太熟悉。例如:
fopen($site,"r") or die("Unable to connect to $site");
这个符号 ||
等同于这个符号吗?
为什么要使用它而不是 try catch
块?什么会导致程序运行 or die()
语句?
可能有重复:
PHP - and / or keywords
我看到一些使用or
的PHP代码,这种用法我不太熟悉。例如:
fopen($site,"r") or die("Unable to connect to $site");
这个符号 ||
等同于这个符号吗?
为什么要使用它而不是 try catch
块?什么会导致程序运行 or die()
语句?
大多数情况下是这样的,但是...
“and”和“or”运算符有两种不同的变体,原因在于它们具有不同的优先级。
or
有其他的优先级。具体的说,这是一个布尔运算符的小技巧。就像在普通的 if
测试表达式中,只有当第一个部分被评估为 false
时,第二个部分才会被执行。这意味着,如果 fopen()
没有失败,die()
就根本不会被触发。
然而,try-catch
只适用于异常,但 fopen()
不会抛出任何异常。
今天这样的写法已经“不太好”。使用异常代替强制退出。
if (!($res = fopen($site, 'r'))) throw new Exception ("Reading of $site failed");
如果第一个命令失败,就会发生“or die”。
这类似于try catch,但这是更直接的方法。
请注意,这是一个经典测试:
fopen($site,"r") or die("Unable to connect to $site");
只有当fopen($site,"r")返回false时,才会运行测试的后半部分:'die('error')'。
同样地,如果(a || b);只有在a返回false时才会运行b。
在PHP中,Die与exit()相同; http://www.php.net/manual/en/function.exit.php
完全停止当前脚本的执行,并打印出错误消息。
是的,它等于||
在这种情况下,它明确地停止页面的执行并打印该错误消息。