Да, подходът ви е правилен. Използване на Try...catch
може да доведе до по-чист и по-четлив код в някои случаи, но цялостният ви подход е добър.
Ако вашият кодов фрагмент е от функция, която обработва заявки от DB и не много друго, вероятно бих променил подхода:
// 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();
Разбира се, ако се нуждаете от много почистване, преди да можете да return
, тогава оригиналният ви подход е по-добър. Особено в тези случаи бих разгледал използването на PDO::ERRMODE_EXCEPTION. Това има някои допълнителни предимства, като изключения, които автоматично отменят транзакцията, освен ако не бъдат уловени.