看到exit()
PHP documentation让我想到了:
$filename = '/path/to/data-file';
$file = fopen($filename, 'r')
or exit("unable to open file ($filename)");
夫妻问题:
exit()
?exit()
结尾,你怎么知道在某些情况下使用它而不是其他? if/else
和or/exit
是否可以互换? 答案 0 :(得分:4)
exit()
或die()
,因为首选是例外。但是,我个人认为你可能会使事情过于复杂......它会杀死脚本执行,因此在你需要杀死脚本时使用它。说实话,我大多数时候只是在调试(一次性断点)时执行中断脚本,这也不理想(再次例外做得更好)。or
非常方便。这是一个有趣的观点...... 为什么
$resource = mysql_connect() || die('dead')
不起作用?
答案是=
运算符优先于or
,因此首先进行分配:($resource = mysql_connect()) or die()
。这样就像做if(!($resource = mysql_connnect())) { die() }
答案 1 :(得分:3)
在该上下文中,该语句中的or
是PHP的logical operators之一,当使用它时,如果将执行第二个语句,并且只有第一个语句时才执行由于short circuit evaluation而失败。
由于fopen
返回false,因此第一部分失败后会执行or exit
语句。
为了更好地理解它,这里是对短路评估的快速解释。
$x = 5;
$y = 42;
if ($x == 5 or $y == 42) {
echo "x or y is true";
}
在上面的代码中,永远不会评估表达式$y == 42
,因为没有必要,因为第一个表达式为真。
在该示例中,他们使用相同的逻辑来决定是否评估调用exit
的语句。
解决您的问题:
exit
完全取决于您正在编写的代码。 or exit
只比使用if/else
短一点。希望有所帮助。
答案 2 :(得分:2)
我倾向于完全避免使用exit()
,因为从用户的角度处理错误是一种非常难看的方式。
如果必须使用它,任何不可恢复的错误都将成为候选者。例如,数据库查询或连接失败,或远程请求失败。
if/else
相当于...or whatever()
。这只是一种风格,后一种形式更简洁。
答案 3 :(得分:1)
我会说如果您正在执行的功能失败,您的代码无法继续使用exit
。例如,读取所需的文件。