混合回报值

时间:2013-11-21 01:12:11

标签: cakephp-2.3

在CakePHP API中,当返回值混合时,这是否意味着在其使用的上下文中返回不同的?例如,如果在逻辑设置中使用,如:

if($this->save())

它将返回true或false,但如果在赋值情况下使用:

$data = $this->save();

它会返回正在保存的数据吗?

参考:http://api.cakephp.org/2.4/class-Model.html#_save

1 个答案:

答案 0 :(得分: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的强类型不像JavaC这样的语言,它们希望显式定义变量和方法返回类型。