Ciao a tutti,
Ho generato (grazie all'aiuto di molte persone nel foro) un dispatch molto semplice per la gestione degli errori generati dal database
Codice PHP:
$dispatcher = new event_EventDispatcher();
$dispatcher->addListener('db.errors',new event_DBErrorsMail(new PHPMailerv51_PHPMailer(),$conf));
//$dispatcher->addListener('db.errors',new event_DBErrorsLog());
$db = new database_DBDispatcherAware($conf);
$db->setDispatcher($dispatcher);
$db->connect();
if($db->getLastError() !="")
throw new Exception($db->getLastError());
Il passo successivo da integrare era descrivere un comportamento a fronte dello stato di errore sql...
Pensavo di aggiungere come ultimo listener un event_DBErrorAction(), dove descrivevo l'azione da compiere per gli stati principali.
Esempio errore di autenticazione riporto al login, sovrascrivendo la proprietà ottenuta dal getLastError() per mostrare a video errori più comprensibili.
Altro esempio per errore insert sql, reindirizzo verso la pagina precedente (o dove è).... ma più che altro per riscrivere i messaggi di errore.
Follia pura oppure c'è qualcosa di sano in questo ragionamento?
Altra cosa... dato che dalla classe a dove ho dato il comando sql non ho più la propagazione, per dell'eccezzione, fuori dalla classe ho pensato di controllare (alla connessione, oppure dopo esecuzione sql ) la variabile e sollevare eccezzione nel caso ci fosse stato errore recuperare GetLastError(e stampare o valorizzare altra var)
E' corretta questa cosa o suggerite di procedere in modo diverso?
Grazie a tutti