Зачем нам нужен «возврат истины» к этому методу?

Это сравнение данных должно происходить только тогда, когда 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; } } 

Если я не укажу return true в предложении else, compareDates () никогда не «выйдет», независимо от значения «1» или «bla bla».

Почему это?

«Argh!: S Я запутался: зачем возвращать true означает« выполнение функции выхода », а return false не означает? Я имею в виду, должен возвращаться независимо от значения, быть концом строки для выполнения этой функции? некоторые основные понятия.

… Но если я изменяю return true, чтобы возвращать false в этом else, методы продолжают называться "

return возвращает независимо от значения, поэтому вы правы в своем предположении.

кажется, что ваш вопрос, вероятно, лежит в функции, вызывающей compareDates (). Вы говорите, что метод «продолжает называться», возможно, вызывается compareDates () в цикле? вам нужно дважды проверить, чтобы убедиться, что вы правильно обрабатываете возвращаемое значение compareDates () в вызывающей функции.

ps (об исключении оператора 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 <- все о валидации данных cake Framework здесь

[Раздел: добавление собственных методов проверки]

«Метод должен возвращать true, если значение действительно. Если проверка не прошла, верните значение false. Другое допустимое возвращаемое значение – это строки, которые будут отображаться как сообщение об ошибке. Возврат строки означает, что проверка не выполнена».

Это означает, что поле firstPageEnterDate будет считаться действительным только в том случае, если вы вернете значение, которое считается истинным из вашей функции compareDates (). возврат false или NULL означает, что поле firstPageEnterDate недопустимо.

Вы даже не нуждаетесь в этом, так как вы ничего не делаете, если оператор if является ложным

Вы можете просто вернуть true как последнее выражение в функции.

Это позволяет проверить правдоподобие при возврате функции иначе, если оператор if не работает, ваша функция вернет неопределенные

Все зависит от вас, что вы возвращаете, если утверждение if ложно, в этом случае вы вернулись

Всегда есть оператор возврата в конце :), вы также можете переписать так:

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

что-то вроде бы было яснее, на мой взгляд.

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