Ciao a tutti stavo provando a creare una classe pdo ma mi sono bloccato alla gesione degli errori.
Inserendo volutamente dei parametri errati nel costruttore, generando così l'eccezione, la riga
$this->getErr("Errore di Connessione"); mi da il seguente errore
Fatal error: Call to a member function getErr() on a non-object
e non riesco proprio a capire il perchè.
Codice PHP:
<?php
class db extends PDO {
private $mailerr = false;
private $logfile = false;
private $mailto = "indirizzi_mail";
public function __construct ( $server = "localhost", $username = "user", $password = "pwd", $dbname = "nomedb" ) {
$dns = ($dbname) ? "mysql:host={$server};dbname={$dbname}" : "mysql:host={$server}";
try{
parent::__construct($dns, $username, $password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
}catch (PDOException $e) {
$this->getErr("Errore di Connessione");
}
}
private function getErr($error = ""){
// se bisogna mandare la mail
if($this->mailerr){
$testo = "Si è verificato un errore: ".$error." \r\n \r\n Indirizzo del file chiamato: ".$_SERVER['REQUEST_URI'];
$subject = "db extends Pdo: Error.";
//$headers = "From: $to\r\n";
//$headers .= "Reply-To: $to\r\n";
//$headers .= "Return-Path: $to\r\n";
if(!mail($to, $subject, $testo, $headers))
die("Errore durante l'invio della Segnalazione!");
}
if($this->logfile){
$fp = @fopen($this->logfile, "a");
@fwrite($fp, date("d/m/Y H:i:s")." - Si è verificato un errore: ".$e->getMessage()."\r\n");
@fclose($fp);
}
if($this->dieerror){
die("Oops! Si e' verificato un errore interno.
".$error."
Stiamo lavorando per risolverlo.");
}
}
}
?>