对于CakePHP中的大多数模型,我经常创建一个处理保存记录的函数。模型保存的默认行为是返回数据数组或错误。
我更喜欢该函数只返回true / false。所以我将结果转换为(bool)。这是将某些东西投射到布尔值的有效方法吗?
从来没有没有工作,但我经常想知道这是不是很糟糕的做法。
public function queue($url,$order=0)
{
$result = $this->save(array(
$this->alias => array(
'agg_domain_id' => $domain_id,
'order' => $order,
'url' => $url
)
));
return (bool)$result;
}
答案 0 :(得分:5)
来自php.net:
要将值显式转换为boolean,请使用(bool)或(boolean)强制转换。但是,在大多数情况下,强制转换是不必要的,因为如果运算符,函数或控制结构需要布尔参数,则会自动转换值。
所以,如果你做if($this->queue('url',0))
,则不需要演员。
但是如果你做if($this->queue('url',0) === true)
那么你需要施展。使用(bool)
进行投射是绝对合法的。
答案 1 :(得分:3)
这是将某些东西投射到布尔值的有效方法吗?
在你只想知道成功或失败的情况下这样做是可以的。
像这样转换返回值的唯一潜在问题是,如果返回值可能是假的类型,例如:
array()
0
""
" "
对save的调用总是返回一个嵌套数组或false - 没有可以通过调用save来获得false-negative结果。