Tak, twoje podejście jest poprawne. Używając Try...catch
może w niektórych przypadkach prowadzić do czystszego i bardziej czytelnego kodu, ale ogólne podejście jest w porządku.
Jeśli twój fragment kodu pochodzi z funkcji, która obsługuje zapytania DB i niewiele więcej, prawdopodobnie zmieniłbym podejście:
// 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();
Oczywiście, jeśli potrzebujesz dużo sprzątania, zanim będziesz mógł return
, wtedy Twoje oryginalne podejście jest lepsze. Szczególnie w takich przypadkach przyjrzałbym się użyciu PDO::ERRMODE_EXCEPTION. Ma to pewne dodatkowe korzyści, takie jak wyjątki, które automatycznie wycofują transakcję, chyba że zostaną złapane.