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
语句只关心 TRUE
或 FALSE
,因此它计算了括号内的任何内容。如果这恰好是一个关闭流的函数,那就这样吧。
请注意,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
};
我是 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
语句只关心 TRUE
或 FALSE
,因此它计算了括号内的任何内容。如果这恰好是一个关闭流的函数,那就这样吧。
请注意,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
};