2

对于我在 CakePHP 中的大多数模型,我经常创建一个处理保存记录的函数。模型保存的默认行为是返回数据数组或 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;
}
4

2 回答 2

5

来自 php.net:

要将值显式转换为布尔值,请使用 (bool) 或 (boolean) 强制转换。但是,在大多数情况下,强制转换是不必要的,因为如果运算符、函数或控制结构需要布尔参数,则值将自动转换。

因此,如果您这样做if($this->queue('url',0)),则不需要演员表。

但如果你这样做了,if($this->queue('url',0) === true)那么你需要投射。并且铸造(bool)是绝对合法的。

于 2013-01-16T18:58:29.373 回答
3

这是将某些东西转换为布尔值的有效方法吗?

是的

在您只想知道成功或失败的情况下这样做很好。

不好的时候

像这样强制转换返回值的唯一潜在问题是返回值是否可能是错误类型,例如:

array()
0
""
" "

调用 save 总是返回嵌套数组或 false - 调用 save 时没有获得假阴性结果的范围。

于 2013-01-16T19:47:29.990 回答