我看到的PHP代码的几个比特的方式我不熟悉使用or
。例如:
fopen($site,"r") or die("Unable to connect to $site");
这是否等于||
?
为什么要用这个代替try catch
块?什么会导致程序运行or die()
?
我看到的PHP代码的几个比特的方式我不熟悉使用or
。例如:
fopen($site,"r") or die("Unable to connect to $site");
这是否等于||
?
为什么要用这个代替try catch
块?什么会导致程序运行or die()
?
这是大部分,但是......
原因的两个不同 变化“和”和“或”运算符 的是,他们在不同的优先级 操作。
或模具发生与第一命令失败。
它类似于try catch,但这是更直接的方法。
注意,这是一个经典试验:
fopen($site,"r") or die("Unable to connect to $site");
只有的fopen($网站, “R”)返回false,将测试的下半年运行: '模(' 错误“) ”。
同样是if(a || b); b只在a返回false时才运行。
在PHP模具是退出(); http://www.php.net/manual/en/function.exit.php
完全停止执行当前脚本,并打印出错误消息。
它与'try-catch'不相似。 – KingCrunch 2011-04-21 17:16:52
有没有赶上 – Gordon 2011-04-21 20:37:26
_类似的尝试赶上,在第一个语句,并在假,执行第二个。或者在真实的情况下,不执行第二个陈述或'catch'。我在评论海报问题'你为什么要用这个而不是try catch块? '当try/catch发生错误时,这是布尔值。 – GAgnew 2011-04-25 05:38:40
or
有其他优先权。具体的陈述是布尔运算符的小窍门。就像在普通的if
-test-expression中一样,只有第一部分的计算结果为false
才会执行第二部分。这意味着,如果fopen()
没有失败,则die()
根本不被触碰。
但是,try-catch
只适用于例外,但fopen()
不会抛出任何。
今天这样的事情是“不太好”的风格。使用异常而不是硬流产
if (!($res = fopen($site, 'r'))) throw new Exception ("Reading of $site failed");
有枪你的头!*打开文件或死* – awm 2011-04-21 17:14:54
*(相关)* [这是什么符号意味着PHP(http://stackoverflow.com/questions-3737139/reference-what-does-this-symbol-mean-in-php) – Gordon 2011-04-21 17:30:20
你知道,我不认为这是重复的。这实际上是一个关于“表达或死亡”的含义的问题。 – 2011-04-21 20:14:00