在 PHP 中返回 void 和 null 之间有区别吗?


Is there a difference between returning void and null in PHP?

当我有这样的函数时:

public function getResult() {
    return;
}

它与返回 null 完全相同吗?如果我这样做:

is_null($this->getResult());

这会导致真的吗?

就运行时行为而言,不,没有。所有函数都隐式返回一个NULL,没有值的return(所以return;)会产生一个NULL返回值。

如果在 PHP 7.1+ 中使用 : void 返回类型声明,则禁止使用 return NULL;(而不是 return;),但这实际上只是一个编码样式的限制。函数调用总是在 PHP 中产生一些值,因此var_dump((function (): void {})());输出NULL

根据上述描述,以下表达式

is_null($this->getResult());

将计算为 true,因为上面提到的代码片段中的函数返回 void。