2

CakePHP で作成したほとんどのモデルでは、レコードの保存を処理する関数を作成することがよくあります。モデルの保存のデフォルトの動作は、データ配列または false を返すことです。

関数が 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;
}
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 の呼び出しで false-negative の結果を取得する範囲はありません。

于 2013-01-16T19:47:29.990 に答える