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.

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top