Ano, váš přístup je správný. Pomocí Try...catch
může v některých případech vést k čistšímu a čitelnějšímu kódu, ale váš celkový přístup je v pořádku.
Pokud váš fragment kódu pochází z funkce, která zpracovává dotazy DB a nic jiného, pravděpodobně bych změnil přístup:
// 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();
Samozřejmě, pokud požadujete provést spoustu vyčištění, než se budete moci return
, pak je váš původní přístup lepší. Zejména v těchto případech bych se podíval na použití PDO::ERRMODE_EXCEPTION. To má některé další výhody, jako jsou výjimky, které automaticky vrátí transakci zpět, pokud nejsou zachyceny.