Şu anda benim PHP MVC web uygulaması bu istemci kodu vardır:
try {
BookMapper::insert($book);
} catch (DbUniqueConstraintViolationException $e) {
$errorList->addMessage($book . " already exists!");
}
Bu düşük seviyeli çerçevesinde Db başvurmak için kötü bir uygulamadır ben merak olduğunu * müvekkilim kodu istisnalar? Eğer öyleyse, ben bu yüzden gibi benim modeli kodu ayarlamak gerekir:
class BookAlreadyExistsException extends Exception { }
class BookMapper {
public static function insert($book) {
try {
// call to DB-layer to insert $book
// (not relevant to the question)
} catch (DbUniqueConstraintViolationException $e) {
throw new BookAlreadyExistsException();
}
}
}
ve sonra bu yeni bir istemci-kodu kullanabilirsiniz ...
try {
BookMapper::insert($book);
} catch (BookAlreadyExistsException $e) {
$errorList->addMessage($book . " already exists!");
}
Ya da başka bir şey mi? Ya da orijinal yöntem gayet iyi?
Teşekkürler!
EDIT: Sadece ikinci yöntem IMO iyi okur, eklemek istiyorum, ama bu nesne oluşturma / havai yeniden atma ve daha da önemlisi, her Eşleştiricisi'nin insert () yöntemi yeniden atma kodu çoğaltma gerektirir ile geliyor. Eski yöntemi uygulamak ve yakalamak kolaydır ve herhangi bir model için çalışır ama bunu bu şekilde yapmak gerektiğini okuduğumu hatırlıyorum?