versione più recente di “... o morire (...”
Domanda
Molto tempo fa ho usato per usare "o morire" nel mio codice PHP. Soprattutto in questo modo:
$q = mysql_query('......') or die(mysql_error());
Ovviamente, che è abbastanza vergognoso in questi giorni, ma la X o Y principio parla ancora a me. Così ho pensato che mi piacerebbe provare questo:
$r = $this->exec($query) or throw new Exception('FAIL');
, ma che si traduce in un errore di analisi! Qual è la migliore pratica per tali dichiarazioni. Si deve guardare bello così (ovviamente!) ...
Non mi piace
if ( !($r = $this->exec($query)) ) throw new ...
o
$r = $this->exec($query)
if ( !$r ) throw new ....
Qualsiasi preferiti? Scoraggiamenti? Migliori pratiche? La velocità è sempre bello.
Soluzione
Non c'è niente di sbagliato con i due esempi che hai usato, se non che li avete sandwitched in una sola riga.
Non sono sicuro di quello che stai cercando, o perché si sta ricerca guasti con un'istruzione if - E 'piuttosto vero e provato a questo punto. Detto questo, si può fare qualcosa di simile per calzascarpe nell'operatore or
, ma chi gestisce il codice dopo te ne sei andato ti maledirà.
function throw_ex($what) {
throw $what;
}
function fails() {
return false;
}
$x = fails() or throw_ex(new exception("failed"));
non vedo come questo guadagni qualsiasi cosa sopra il ol' if.
Altri suggerimenti
Il fatto della questione è, si dovrebbe usare se le dichiarazioni di cattura effettivi, errori recuperabili . Specialmente se si sta utilizzando InnoDB che a volte possono avere situazioni di stallo durante il funzionamento normale e il modo corretto di gestire loro è non morire (), ma semplicemente inviare nuovamente la query.
Più informazioni su: http://arjen-lentz.livejournal.com/150464.html