Смешанные возвращаемые значения
В API CakePHP, когда возвращаемое значение является смешанным, означает ли это, что возвращаемое значение отличается в контексте его использования? Например, если используется в логической настройке, например:
if($this->save())
он вернул бы true или false, но если использовать в ситуации присваивания:
$data = $this->save();
он вернул бы сохраненные данные?
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
которые ожидают, что переменные и возвращаемые методы будут явно определены.