Oui, votre approche est correcte. Utiliser Try...catch
peut conduire à un code plus propre et plus lisible dans certains cas, mais votre approche globale est correcte.
Si votre fragment de code provient d'une fonction qui gère les requêtes DB et pas grand-chose d'autre, je changerais probablement l'approche :
// 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();
Bien sûr, si vous avez besoin de beaucoup de nettoyage avant de pouvoir return
, alors votre approche originale est meilleure. Surtout dans ces cas, j'envisagerais d'utiliser PDO::ERRMODE_EXCEPTION. Cela présente des avantages supplémentaires, comme les exceptions annulant automatiquement la transaction à moins qu'elles ne soient interceptées.