如何判断函数是返回"nothing"还是NULL?

svi*_*gen 2 php null

考虑一个显式返回的函数null:

function nullreturn() {return null;}
$rv = nullreturn();
var_dump($rv);
var_dump(isset($rv));
var_dump(is_null($rv));
Run Code Online (Sandbox Code Playgroud)

其中标识为null- 如预期的那样.

NULL
bool(false)
bool(true)
Run Code Online (Sandbox Code Playgroud)

并考虑一个没有返回值的函数 - 甚至是一个return声明:

function noreturn() {}
$rv = noreturn();
var_dump($rv);
var_dump(isset($rv));
var_dump(is_null($rv));
Run Code Online (Sandbox Code Playgroud)

其中标识为null:

NULL
bool(false)
bool(true)
Run Code Online (Sandbox Code Playgroud)

...有没有办法确定noreturn返回"没有"而不是null


至于为什么我需要这个null/ void区别,我一直在努力实现与先前的服务实现的兼容性,该实现确实做出了这种区分并且包括对它的测试.但是,它可能并不重要.我只是不想剥离相关的测试,并希望如果我忽略了可实现的解决方案,我不会依赖于这种区别.

Wil*_*ill 5

不.没有返回,返回NULL,是完全相同的事情.没有返回值的函数会隐式返回NULL.这适用于多种语言.对不起,如果这不是您正在寻找的答案,但这是现实.

以下各项完全相同:

function A() {
    return;
}

function B() {
    return NULL;
}

function C() {
}
Run Code Online (Sandbox Code Playgroud)

另见returnPHP手册:

注意:如果未提供参数,则必须省略括号并返回NULL.使用括号调用return但没有参数将导致解析错误.