Ja, ditt tillvägagångssätt är korrekt. Använder Try...catch
kan leda till renare och mer läsbar kod i vissa fall, men ditt övergripande tillvägagångssätt är bra.
Om ditt kodfragment kommer från en funktion som hanterar DB-frågor och inte mycket annat, skulle jag förmodligen byta tillvägagångssätt:
// Begin Transaction
$this->db->beginTransaction();
// Fire Queries
if(!$query_one->execute()){
$this->db->rollback();
// other clean-up goes here
return;
}
if(!$query_two->execute()){
$this->db->rollback();
// other clean-up goes here
return;
}
$this->db->commit();
Naturligtvis, om du behöver göra mycket städning innan du kan return
, då är ditt ursprungliga tillvägagångssätt bättre. Speciellt i dessa fall skulle jag överväga att använda PDO::ERRMODE_EXCEPTION. Detta har några ytterligare fördelar, som undantag som automatiskt återställer transaktionen om de inte upptäcks.