我有这段代码
$return = $ep->$method($params);
if ($return === null) {
throw new Exception('Endpoint has no return value');
}
return $return;
有没有办法区分返回null
的方法和不返回任何内容的方法?
答案 0 :(得分:32)
这是不可能的。如果未设置返回值,则函数将自动返回null。
答案 1 :(得分:1)
如果函数没有返回任何内容,则不应测试它的返回值。您应该知道哪些函数可以返回某些内容或者根本不返回内容 - 即使您不是编写它们的人。
答案 2 :(得分:0)
你可以让函数返回另一个值吗?布尔值为true,并检查该值或null。
答案 3 :(得分:0)
使用PHP7的返回类型声明功能:
function a(): void {
return null; // :(
}
function b(): void {
// :)
}
function c(): void {
return; // :)
}
答案 4 :(得分:0)
您可以执行以下操作:
ob_start();
echo trim($ep->$method($params));
$output = ob_get_contents();
ob_end_clean();
if (empty($output)) {
throw new Exception('Endpoint has no return value');
}
return $return;