在CakePHP API中,当返回值混合时,这是否意味着在使用的上下文中返回不同的值?例如,如果在逻辑设置中使用,如:
if($this->save())
它会返回true或false,但如果在分配情况下使用:
$data = $this->save();
它会返回保存的数据吗?
参考:http://api.cakephp.org/2.4/class-Model.html#_save
在PHP
中,如果一个方法返回mixed
类型,则意味着它可以根据输入而不是调用它的上下文返回不同类型的变量。在您的示例中,成功时将返回Model::$data
(填充时)或true
(未填充时),错误时返回false
。
因为true
和非null对象值将在PHP
中计算为true
,所以您可以实现以下示例:
$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
这样的语言那样是强类型的,因为它们期望显式定义变量和方法返回类型。