应该使用函数:return null;?

时间:2012-01-05 20:11:54

标签: php

函数应该返回null吗?

E.g。

function test()
{
    return null; // vs return;
}

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

PS

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

7 个答案:

答案 0 :(得分:45)

一直是展示你回归的好方法。

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

function test()
{
    return null;
}


function test()
{
    return;
}


function test()
{

}

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

NULL

答案 1 :(得分:22)

如果您没有返回任何内容,只需使用return;或在功能结尾处省略它。
如果你的函数通常会返回某些东西,但由于某种原因没有,那么return null;就是你的选择。

这与你的做法类似,例如:在C中:如果你的函数没有返回东西,它是void,否则它经常会返回一个有效的指针或NULL。

答案 2 :(得分:7)

PHP中未定义的函数返回值总是等于NULL,所以它没有任何区别(运行时会这样做)。

有什么不同之处在于您使用docblock并使用@return标记记录返回值,以便在此处提供IDE的优惠信息。

如果您想根据文档块发出信号,表明没有返回值,您可以使用void

 * @return void

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

 * @return null

或:

 * @return NULL

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

继续阅读:

更多详细信息和更新信息为in PeeHaa's answer to this same question

答案 3 :(得分:6)

如果没有任何回报,返回null是很愚蠢的。执行return;表示不打算实际返回任何内容。并明确了该功能的作用。

PHP没有void返回类型这一事实不应成为使意图不那么清晰的原因。另请注意,PHP 7.1将为the void return type提供支持:

function test(): void {
    return null; // this will error
}

答案 4 :(得分:1)

从语义上讲,我不认为两者之间存在差异。根据{{​​3}}:

  

如果未提供参数,则必须省略括号   将返回NULL。

我个人喜欢把NULL放在那里。然后毫无疑问,返回的是什么,使您的调试更容易。

答案 5 :(得分:0)

PEAR最佳做法页面在“早期返回”示例中执行了return null。这增加了我们应该总是尝试做的可读性,因为我们为人而不是计算机编写代码。

来源:http://pear.php.net/manual/en/standards.bestpractices.php

答案 6 :(得分:0)

当您将 return type declarations 与可为空的前缀“?”一起使用时它们是有区别的!

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