保存记录时这个简单的演员是否安全?

时间:2013-01-16 18:46:56

标签: php cakephp cakephp-2.2

对于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;
}

2 个答案:

答案 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结果。