【问题标题】:PHPStorm missing return statementPHPStorm 缺少返回语句
【发布时间】:2013-11-30 12:56:14
【问题描述】:

这个函数

public function confirmation() {
  if (is_array($this->modules)) {
    if (isset($GLOBALS[$this->selected_module]) && 
        is_object($GLOBALS[$this->selected_module]) && 
        ($GLOBALS[$this->selected_module]->enabled)) {
      return $GLOBALS[$this->selected_module]->confirmation();
    }
  }
}

通知

缺少返回语句

有什么解决方案可以让返回值超出括号吗?

【问题讨论】:

  • 嗨罗尼。以下任何答案是否解决了您的问题?如果是,您能否通过单击箭头将最有帮助的答案标记为已接受。它阻止其他人尝试解决已经解决的问题。

标签: php phpstorm


【解决方案1】:

您在这里拥有的是条件中的单个return。如果条件不满足,则执行将到达函数的末尾而不会遇到return 语句,相当于return null

因此,您可以做的一件事是明确return null

if (...) {
    return $GLOBALS[$this->selected_module]->confirmation();
}
else {
    // Can also do this without an "else", it's a matter of style
    return null;
}

您还可以使用三元运算符将条件移动到返回值表达式中:

return is_array($this->modules) &&
       isset($GLOBALS[$this->selected_module]) && 
       is_object($GLOBALS[$this->selected_module]) && 
       $GLOBALS[$this->selected_module]->enabled)
       ? $GLOBALS[$this->selected_module]->confirmation()
       : null

但是,对于三元运算符来说,这可能太多了,无法优雅地处理,因此这里的可读性可能是一个问题。

【讨论】:

  • 你是对的。有了你的解释,我明白了,这也是合乎逻辑的。
  • 只是补充一下 - 我会避免使用 else 来获得更具可读性的代码。
【解决方案2】:

你可以在一个函数中有多个返回语句。

如果设置不正确,请确定代码的行为方式,并在函数末尾放置默认的返回语句。或者,如果这是一个绝对不应该发生的完全错误情况,则引发异常。

【讨论】:

    猜你喜欢
    • 2017-01-26
    • 2017-09-21
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-21
    • 2021-07-11
    • 2017-05-15
    相关资源
    最近更新 更多