php - 为什么 if/else vs. or/exit 在 PHP 中?

标签 php if-statement fopen exit

看到 exit() PHP documentation让我思考:

$filename = '/path/to/data-file';
$file = fopen($filename, 'r')
or exit("unable to open file ($filename)");

几个问题:

  1. 除了使用 exit() 打开文件外,还有哪些常见用例?
  2. 由于并非每个人编写的每个函数都以 exit() 结尾,您如何知道在某些情况下使用它还是在其他情况下使用它?
  3. if/elseor/exit 可以互换吗?

最佳答案

在该上下文中,该语句中的 是 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 的语句。

解决您的问题:

  1. 除非程序非常具体,否则我不会在打开文件失败时使用 exit。更好的做法是记录错误,然后将错误返回给调用者,以便他们决定要做什么。
  2. 何时使用exit 完全取决于您编写的代码。
  3. 给出了关于短路的解释,是的,它们在这个意义上是可以互换的。使用 or exit 只比使用 if/else 短一点。

希望对您有所帮助。

关于php - 为什么 if/else vs. or/exit 在 PHP 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11495759/

相关文章:

php - 如何将 Selenium 输出导出到 PHP?

php - laravel 护照 : Request user() returning null outside auth:api middleware, 和内部返回用户对象

php - 如果有 has_term,加载其他 Wordpress 主题

java - Kotlin 中选择 "when"与 "if/else"的标准是什么?

c - fopen() 返回 NULL 指针,但文件确实存在

php - fopen 并获取系统文件描述符

php - 警告 : mysql_real_escape_string(): Access denied for user '' @'localhost' (using password: NO)

javascript - .htaccess。给出 410 错误并重定向动态 php 页面

ios - iOS 16 后的连续数

c - 有人可以告诉我我的错误吗?