为什么if/else vs.或/退出PHP?

tim*_*son 7 php fopen if-statement exit

看到exit() PHP文档让我思考:

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

情侣问题:

  1. 除了打开文件使用之外还有哪些常见用例exit()
  2. 既然不是每个人都写过的每个函数都结束了exit(),你怎么知道在某些情况下使用它而不是其他?
  3. if/elseor/exit互换?

dre*_*010 4

在这种情况下,orin 该语句是 PHP 的逻辑运算符之一,当且仅当第一个语句由于短路评估而失败时,才会执行第二个语句。

由于fopen返回 false,该or exit语句将在第一部分失败后执行。

为了更好地理解它,这里对短路评估进行快速解释。

$x = 5;
$y = 42;

if ($x == 5 or $y == 42) {
    echo "x or y is true";
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,表达式$y == 42永远不会被计算,因为没有必要,因为第一个表达式为真。

在该示例中,他们使用相同的逻辑来决定是否评估调用的语句exit

解决您的问题:

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

希望有帮助。