PHP 调用方法并同时检查 return

PHP calling a method and checking return simultaneously

我是 PHP 的新手,有一个非常简单的问题。我见过人们在 if 语句的条件中调用和 return 语句。例如

if ($connection = @ssh2_connect($host, 22)) { do something };

如果我没记错,这将检查 return 布尔值并创建连接。这对一切都有效吗?更具体地说,对于 fclose(),我想知道我是否会这样做:

if (fclose($stream)) { do something };  

将实际关闭检查它的布尔值 return 并关闭流。还是我必须这样做?

...
fclose($stream);
if (fclose($stream)) { do something };  
...

你可以这样做:

if (fclose($stream)) { do something };  

它会起作用,但可能不像你想象的那样。首先关闭流,然后 if 语句检查该函数的结果,一个布尔值。

换一种方式看:if 语句只关心 TRUEFALSE,因此它计算了括号内的任何内容。如果这恰好是一个关闭流的函数,那就这样吧。

请注意,TRUE 就是除 FALSE 之外的所有内容,FALSE 也可以是零(0'0'),''NULL、等等

只要一个函数 returns 一个值相当于 bool (fclose returns boolean) it'l work, see here and here

// this doesn't make much sense, because you already closed a stream
fclose($stream); //return true
if (fclose($stream)) { // will return false because resource already closed
    // do something 
};