函数应该返回null
吗?
E.g。
function test()
{
return null; // vs return;
}
后者被认为是不良做法还是不重要?
PS
是否不好的做法不应该是主观的恕我直言。
答案 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
的信号,可以使用null
或NULL
(取决于您对大写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
时,一切都很好。