Смешанные возвращаемые значения

В API CakePHP, когда возвращаемое значение является смешанным, означает ли это, что возвращаемое значение отличается в контексте его использования? Например, если используется в логической настройке, например:

if($this->save())

он вернул бы true или false, но если использовать в ситуации присваивания:

$data = $this->save();

он вернул бы сохраненные данные?

Ссылка: http://api.cakephp.org/2.4/class-Model.html

1 ответ

Решение

В PHP если метод возвращает mixed тип означает, что он может возвращать различные типы переменных в зависимости от ввода, а не от контекста, в котором он вызывается. В вашем примере это вернется Model::$data (при заселении) или true (когда это не так) в случае успеха, или false по ошибке.

Так как true и ненулевое значение объекта будет оцениваться как true в PHP, вы можете реализовать свой пример, как:

$data = $this->save();
if ($data===true){
   // save() was successful, and $data is the boolean true
} elseif ($data) {
   // save() was successful, and $data is the object Model::$data
} else {
   // save() failed.
}

Это все возможно, потому что PHP не сильно типизированы, как языки, такие как Java а также C которые ожидают, что переменные и возвращаемые методы будут явно определены.

Другие вопросы по тегам