「…またはdie(…」の新しいバージョン
質問
ずっと前に、私は自分のPHPコードで「または死ぬ」を使用していました。特にこのように:
$q = mysql_query('......') or die(mysql_error());
明らかに、それは最近ではかなり恥ずべきことですが、XまたはYの原則はまだ私に話しかけています。だから私はこれを試してみます:
$r = $this->exec($query) or throw new Exception('FAIL');
しかし、その結果、解析エラーが発生します!そのような声明のベストプラクティスは何ですか。見た目もいいです(明らかに!)...
私は好きではありません
if ( !($r = $this->exec($query)) ) throw new ...
また
$r = $this->exec($query)
if ( !$r ) throw new ....
お気に入りはありますか?落胆?ベストプラクティス?スピードはいつもいいです。
解決
使用した2つの例には何の問題もありませんが、1つのラインにサンドウィッチしたことを除いて。
あなたが何を探しているのか、なぜあなたがIFステートメントで過失を見つけたのかわかりません - それはこの時点でかなり試されていて真実です。とはいえ、あなたはこのようなことをすることができます or
オペレーターですが、あなたがいなくなった後にあなたのコードを維持する人は誰でもあなたを呪うでしょう。
function throw_ex($what) {
throw $what;
}
function fails() {
return false;
}
$x = fails() or throw_ex(new exception("failed"));
これがどのようにしてol 'ifステートメントで何かを獲得するかわかりません。
他のヒント
問題の事実は、 実際の回復可能なエラーをキャッチするためにステートメントを使用する必要があります. 。特に、通常の操作中にデッドロックがある場合があり、それらを処理する適切な方法は死ぬことはありませんが、単にクエリを再度送信することはありません。
所属していません StackOverflow