为什么我们需要这个方法的“return true”?

时间:2013-12-29 15:42:21

标签: php

仅当enable具有字符串1时才应进行此数据比较。

public function compareDates() 
{
  if ($this->data[$this->alias]['enabled'] === "1") {
    return $this->data[$this->alias]['firstPageEnterDate'] < $this->data[$this->alias]['firstPageLeaveDate'];
  } else {
    return true;
  }
}

如果我没有在else子句中声明return true,则compareDates()将永远不会“退出”,无论值是“1”还是“bla bla”。

为什么?

4 个答案:

答案 0 :(得分:2)

  

“唉!:我感到困惑:为什么返回true意味着”退出功能   执行“,并返回false不?我的意思是,应该返回   值,是该函数执行的行的结尾?一世   显然缺少一些核心概念。请指教。

     

...但是,如果我更改返回true以在该else子句上返回false,   这些方法被称为“

无论价值如何,

返回都会返回,因此您的假设是正确的。

似乎您的问题可能在于调用compareDates()的函数。你说方法“继续被调用”,是在循环中调用compareDates()吗? 您需要仔细检查以确保正确处理调用函数中compareDates()的返回值。

P.S。 (关于省略函数的return语句的问题)

来自http://www.php.net/manual/en/functions.returning-values.php

  

“如果省略返回值,则返回NULL值。”

**更新**

现在我们知道你正在使用Cake Framework。

来自http://book.cakephp.org/2.0/en/models/data-validation.html&lt; - 所有关于蛋糕框架数据验证的地方

[部分:添加您自己的验证方法]

  

“如果值有效,则该方法应返回true。如果该值有效   验证失败,返回false。其他有效的返回值是   将显示为错误消息的字符串。返回一个字符串   表示验证失败。 “

这意味着只有从compareDates()函数返回一个被认为为true的值时,firstPageEnterDate字段才会被视为有效。返回false或NULL将意味着firstPageEnterDate字段无效。

答案 1 :(得分:1)

如果if语句为false,你甚至不需要else,因为你不做任何其他事情

您可以返回true作为函数中的最后一个语句。

这允许你检查函数返回的真实性,否则如果if语句失败,你的函数将返回undefined

如果if语句为false,则归结于你所返回的内容,在这种情况下,你返回true

答案 2 :(得分:0)

最后总是有一个return语句:),你也可以这样重写:

public function compareDates() 
{
  if ($this->data[$this->alias]['enabled'] === "1") {
    return $this->data[$this->alias]['firstPageEnterDate'] < $this->data[$this->alias]['firstPageLeaveDate'];
  } 
    return true;
}

答案 3 :(得分:0)

在我看来会更清楚。

public function compareDates() 
{
  return ($this->data[$this->alias]['enabled'] != "1")  ||

    ($this->data[$this->alias]['firstPageEnterDate'] < 
      $this->data[$this->alias]['firstPageLeaveDate'];)
}