应该使用函数:return null;?

Pee*_*Haa 35 php

函数应该返回null吗?

例如

function test()
{
    return null; // vs return;
}
Run Code Online (Sandbox Code Playgroud)

后者被认为是不良做法还是不重要?

PS

是否是不好的做法不应该是主观的恕我直言.

dev*_*Rew 47

总是一个很好的做法来展示你的回归.

但作为提示,以下内容都是等效的:

function test()
{
    return null;
}


function test()
{
    return;
}


function test()
{

}
Run Code Online (Sandbox Code Playgroud)

在所有情况下,var_dump(test());将有:

NULL
Run Code Online (Sandbox Code Playgroud)

  • 最后一个函数示例非常清楚,没有什么可以返回.那么哪个例子最能说明你的眼睛? (7认同)
  • 与第一条评论一样......总是一个很好的做法来展示你的回归.所以我的选择是第一个. (2认同)

Thi*_*ter 26

如果您没有返回任何内容,只需return;在函数末尾使用或省略它.
如果你的功能通常会返回一些但不是出于某种原因,那return null;就是要走的路.

这与你如何做它类似,例如在C中:如果你的函数不返回东西,那么void它通常会返回一个有效的指针或NULL.

  • 是的,但是这样更清楚的是返回值可能会被调用者使用. (3认同)
  • 并非每个项目都使用doc评论. (2认同)

hak*_*kre 9

PHP中未定义的函数返回值总是等于NULL,因此它没有任何区别(运行时执行此操作).

有什么区别的是你使用docblocks并使用@return标签记录返回值,这里有聪明的IDE提供信息.

如果您希望根据文档块发出信号,表示未返回值,则可以使用void:

 * @return void
Run Code Online (Sandbox Code Playgroud)

如果您想要发出返回的信号,NULL可以使用nullNULL(取决于代码样式的大写PHP标准常量):

 * @return null
Run Code Online (Sandbox Code Playgroud)

要么:

 * @return NULL
Run Code Online (Sandbox Code Playgroud)

这应该使编码器意图可见,因为PHP将始终null作为事实返回值.

继续阅读:

更多细节和更新信息在PeeHaa对同一问题的回答中.


Pee*_*Haa 9

null如果没有什么可以归还的话,回归真是太愚蠢了.做return;表演意图不实际返回任何东西.并明确了该功能的作用.

PHP没有void返回类型这一事实不应成为使意图不那么明确的理由.还要注意的是PHP 7.1将提供支持void返回类型:

function test(): void {
    return null; // this will error
}
Run Code Online (Sandbox Code Playgroud)


pow*_*tac 6

当您使用带有可为空前缀“?”的返回类型声明时 它们是有区别的!

PHP 文档说...

从 PHP 7.1.0 开始,可以通过在类型名称前加上问号 (?) 来将返回值标记为可为空。这表示该函数返回指定类型或 NULL。

因此,当您不返回任何内容时,错误消息将是:

Fatal error: Uncaught TypeError: Return value of test() must be of the type string or null, none returned in ...

当您返回return;错误消息时,将是:

Fatal error: A function with return type must return a value (did you mean "return null;" instead of "return;"?) in ...

当你回来时null,一切都很好。

https://3v4l.org/5NTvg

  • 大概这是因为,从 PHP 7.1 开始,“void”是一种特殊的返回类型(对于不返回值的函数),现在与“null”(即值“null”)不同。函数返回值/类型。不过,如果您尝试将返回值分配给变量,无论哪种情况,您的变量最终都会得到值“null”。(另请参阅 [“void” 返回类型的 PHP RFC](https://wiki.php.net/rfc/void_return_type)。) (2认同)