【问题标题】:Check if PHP function returns null or nothing检查 PHP 函数是否返回 null 或什么也不返回
【发布时间】:2009-11-27 16:55:49
【问题描述】:

我有这个代码

 $return = $ep->$method($params);
 if ($return === null) {
  throw new Exception('Endpoint has no return value');
 }
 return $return;

有什么方法可以区分返回null的方法和什么都不返回的方法?

【问题讨论】:

  • 这不工作if ($return === "") {} 吗?

标签: php return-value


【解决方案1】:

这是不可能的。当没有设置返回值时,函数自动返回null。

【讨论】:

  • 对不起,正确答案是。是的,您可以修改和重新编译 PHP 源代码。 :P
【解决方案2】:

如果函数没有返回任何东西,那么你不应该测试它的返回值。你应该知道哪些函数应该返回一些东西或什么都不返回——即使你不是编写它们的人。

【讨论】:

  • 通常情况下是的,但在这种情况下,函数是动态查找的。​​span>
  • 那么根据其他答案和提供的信息,我预见的唯一解决方案是 PHP 解析它自己的代码并在函数声明中查找“return”关键字。
【解决方案3】:

你可以让函数返回另一个值吗?布尔值可能为真,并检查是否为空。

【讨论】:

  • 我并不总是编写被调用函数的人
【解决方案4】:

使用 PHP7 的返回类型声明功能:

function a(): void {
    return null; // :(
}

function b(): void {
    // :)
}

function c(): void {
    return; // :)
}

【讨论】:

  • 您必须使用反射来检查提示的返回类型 - 比较 b() === null 仍然正确。
【解决方案5】:

你可以这样做:

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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-29
    • 2011-07-18
    • 2012-10-17
    • 1970-01-01
    • 2013-05-15
    • 1970-01-01
    • 2018-02-04
    相关资源
    最近更新 更多