1

昔、私はPHPコードで「ordie」を使用していました。特にこのように:

$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 ....

お気に入りはありますか?落胆?ベストプラクティス?スピードはいつもいいです。

4

2 に答える 2

2

使用した2つの例は、1行にサンドウィッチしたことを除けば、何も問題はありません。

何を探しているのか、なぜifステートメントに誤りがあるのか​​わかりません。現時点ではかなり試行錯誤されています。とは言うものの、オペレーターの靴べらにこのようなことをすることはできますが、orあなたが去った後にあなたのコードを維持する人は誰でもあなたを呪うでしょう。

function throw_ex($what) {
  throw $what;
}

function fails() {
  return false;
}

$x = fails() or throw_ex(new exception("failed"));

これがol'ifステートメントよりもあなたに何かをもたらす方法がわかりません。

于 2010-08-21T02:24:32.103 に答える
1

問題の事実は、実際の回復可能なエラーをキャッチするためにifステートメントを使用する必要があるということです。特に、通常の操作中にデッドロックが発生する可能性のあるInnoDBを使用していて、それらを処理する適切な方法がdie()ではなく、クエリを再送信する場合は特にそうです。

詳細はこちら:http ://arjen-lentz.livejournal.com/150464.html

于 2010-08-21T02:37:06.900 に答える